在我们平时的写代码过程中
平时见到的0 - 就是数字0
这种被单引号引起来的 ‘ 0 ’ - 字符0
被单引号引起来的\0:‘ \0 ’ - 转义字符,是字符串的结束标志,ASCII码值是0
EOF - 是end of file 大写字母的缩写,也是文件的结束标志,本质上是-1
NULL - 是空指针,本质上是0
关于scanf函数的一些问题:scanf函数的一般形式为: scanf("格式控制字符串", 地址表列);
-
scanf输入时需要注意
scanf的格式控制字符串当中,两个相邻的变量,录入格式化设置时中间如果是通过空格隔开的,在输入的时候就需要通过空格来把输入的两个数据隔开,如果使用的是逗号,输入时就需要通过逗号来隔开数据。而且输入时的格式以及变量的个数和顺序都要与代码当中设置的格式一一对应。
int main()
{
int a ;
int b;
scanf("%d %d",&a,&b);
printf("a = %d , b = %d \n",a,b);
return 0;
}
正常输入:
异常输入:
当输入变量的数据时,中间是通过其他方式隔开,第二个数据就会出现上述情况,因为在读取这些数据放入相应的变量当中时,变量a将它第一个数据读取走了,第二个数据由于逗号的影响导致它读取不到后面的6,所以变量b的内容就还是它最初创建的时候所赋予的随机值。
-
格式化的时候在后面加了一个\n的转义字符
在代码当中可以看到,格式控制字符串的末尾因为手误加了一个\n的转义字符,导致程序的逻辑产生了偏差
-
输出的时候输出函数的输出顺序是按照输出函数的变量顺序来的
可以看到输入的数据顺序和输出的数据顺序是通过代码的逻辑来控制的
-
放在while循环当中的连环输入
因为scanf函数的返回值,返回的是读取到的数据的个数,比如你用scanf一次性读取两个数据,他的返回值就是2,一次性读取3个数据,返回值就是3......所以可以通过这种特性来实现scanf的连续读取
方式一:
int main()
{
int a;
while (scanf("%d",&a) == 1)
{
printf("a = %d\n",a);
}
return 0;
}
方式二:
int main()
{
int a;
while(scanf("%d",&a)!=EOF)
{
printf("a = %d\n", a);
}
return 0;
}
既然能够连续读取了,那么如果读取完毕该怎么停止呢?
我们可以通过输如ctrl+z(也就是让scanf读取失败,scanf函数读取失败的时候返回EOF)来实现,由于我使用的是vs2019发现这个编译器当中是需要输入三次才能够让程序结束,不同编译器的实现原理不同。