C语言:当scanf语句中有转义字符时,你该这样输入

Posted 坚持不懈的大白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:当scanf语句中有转义字符时,你该这样输入相关的知识,希望对你有一定的参考价值。

最近在重新学习一下C语言的有关知识,突然发现现在来看过去所学的知识,自己的感受又有很大的不同,就拿输入语句scanf来说吧!看到CSDN问答上有一个关于scanf语句的问题,当时题主代码很简单,可是就是没有输出语句的打印,我也琢磨了很久,就是一直没有找到他的代码问题或者输入操作所在,直到今天重新学习一下C语言,眼前一亮,找到当时题主的问题所在了,于是写了这篇文章。

文章目录

1. 一个有关scanf输入语句的示例

前一段时间看到CSDN问答上有一个关于scanf输入语句的问题,具体实例小编已经记不清楚了,但是小编记得当时题主的问题,具体问题不好描述,还是看相关代码或者截图吧!

#include <stdio.h>
#include <stdlib.h>

int main()
    int a;
    scanf("%d\\n",&a);
    printf("%d\\n",a);
    system("pause");
    return 0;

当时那位题主就是问为什么没有输出,如下:

上述图片中的操作位输入100,然后按键盘Enter多个,一直没有看到输出语句。
现在小编通过自己学习发现,上述输入语句要想执行成功,需要在输入100后面直接加\\n即可,如下:

如果是如下输入语句(两个变量),那情况又一样了。

#include <stdio.h>
#include <stdlib.h>

int main()
    int a,b;
    scanf("%d\\n%d\\n",&a,&b);
    printf("%d,%d\\n",a,b);
    system("pause");
    return 0;

此时,如果输入语句位123\\n456\\n,那么结果就会有问题了。

可以发现变量b的值是不对的,此时应该这样输入,如下:

通过上述示例,小编觉得输入语句有这样的规定,如果在输入语句中出现转义字符,只有一个转义字符且出现在末尾,那么输入语句会把这个转义字符当成一个普通字符来看;如果出现在中间,那么输入语句会认为这个转义字符就是转义字符,直接输入即可,如下:


如果有多个转义字符,那么在中间的转义字符直接输入对应的操作(如\\n,点击键盘Enter)即可,在末尾的则输入转义字符本身即可(如\\n输入\\n),如下:

最后,再总结一下scanf语句,如果在“格式控制字符串”(指"%d%d"这些语句)中除了声明以外,还有其他字符,则在输入数据时在对应的位置上应输入与这些字符相同的字符。(如果其中有转义字符,那么在中间的转义字符直接点击相应的键盘操作即可,而在末尾的转义字符则输入转义字符本身即可[即\\n直接输入\\n,把\\n当成普通字符来看待即可,不要把它看成换行符号])。

2. 常见的转义字符

对了,为了方便读者了解还有哪些转义字符,小编把常用的转义字符用表格排列出来。

转义字符字符值
\\’单撇号(')
\\"双撇号(")
\\?问号(?)
\\\\反斜线(\\)
\\a警告(alert)
\\b退格(backspace)
\\f换页(form feed)
\\n换行
\\r回车
\\t水平制表符
\\v垂直制表符

以上是关于C语言:当scanf语句中有转义字符时,你该这样输入的主要内容,如果未能解决你的问题,请参考以下文章

c语言:关于scanf()语句与while循环的问题

c语言将字符输入至数组为啥不执行呢

谁知道c语言的格式符,转义字符定义时的英文全拼,例如十进制d是decimal,谢了。有加分哦!

C语言中如何实现多组数据输入输出?

江哥带你玩转C语言 | 05-printf 和 scanf 函数

汇编 调用C语言Scanf为啥会要求输两次