今天在练算法的时候学到了一些东西。
首先是学到了EOF的用法:
EOF其实所代表的含义就是-1,因为C语言的数据都是按照ASCII码存放的,而ASCII码为0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
那么最实用的应该就是在使用while进行循环来输入数据的时候,如果不知道要输入多少,就很难在输入的时候跳出循环,这个时候我们就可以用EOF来跳出循环。
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d%d",a,b)!=EOF)
{
}
}
这个代码的原理就是当成功在a、b均赋值成功返回值为2,只是a赋值成功返回1,a、b都不成功返回0,出错的时候返回EOF。所以这个时候我们就可以通过ctrl+z的方式来跳出循环,这是一个比较不错的手段。
while( )
然后就是在练习的时候才发现while中间是可以加逗号的,然后他的意思就是当其中一个表达式返回值为否的时候跳过整个循环,也是一个可以记录的点。
比如
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d%d",a,b)!=EOF,a,b)
{
}
}
此代码的含义就是当报错(当你输入ctrl+z)或者a==0或者b==0的时候即跳出循环。
scanf("%[^\n")
这个是我在学习如何输入字符串时学到的,因为如果输入字符串的话基本是要用gets();而不用scanf(“%s”,);因为两者的差别是gets可以输入空格,而scanf是不能输入空格的,会被当做字符串已经输入完毕,导致出错。
那被称为格式化输入函数的scanf究竟能不能输入空格呢,既然名字这么高大上,当然可以,那就是scanf("%[^\n") 这个的意思就是可以保存除了\n以外的所有符号(数字等),而空格也就理所当然的被添加进白名单啦。
注:此博客仅用于记录本人的学习情况,帖子内容都是在本网站上学习来的,首先十分感谢博客作者,如有侵权,请联系我删帖,并表达我的歉意。