c语言 scanf 和 读取回车
while (scanf("%[^\n]",string) != EOF ) {//程序}可以运行到文件结束
但是,我想把EOF换成‘\n' 读到空白一行停止 结果程序死循环
请问如何解决?
filename.inp看起来是这样的:
Registers
r1 = 0c100009
Instructions
0c100009
3c071001
8ce20011
84e33080
80e48000
ace2ffff
a4e39001
a0e48088
03e00008 展开
注意下判断语句,其实是在拿scanf的返回值在和EOF或\n比较。
scanf的返回值类型为int,值由后面的参数决定,返回值表示成功读入的数据的个数。
如:scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2。
如果只有a被成功读入,返回值为1。
如果a和b都未被成功读入,返回值为0。
如果遇到错误或遇到end of file,返回值为EOF。
扩展资料:
注意事项
scanf 的各种格式中,%d、%c、%s三种最常用,通常都是以回车作为一次输入的结束。由于对字符解析方式及字符特点不同(如数字中一般不会出现空格回车等特殊字符)不同,%d格式一般不会在连续输入时,遇到问题。而%s和%c却会出现各种各样的问题,比如回车问题,空格问题等。
scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。在类型匹配错误的时候,以非正常的方式退出。可以利用scanf函数的返回值判断输入是否正确,并进行流程控制:
int i = 0; char c1[15]; while((scanf("%c", &c1[i])!=EOF) && i<14)
{
i++;
}
#include<stdio.h>
int main(){
inti;
charj;
scanf("%d",&i);
scanf("%c",&j);
printf("%d%c\n",i,j);
return0;
}
扩展资料
C语言fgets,gets,scanf对于输入完毕后的回车符的处理
1、注意fgets函数的第二个参数n,是包括结束符在内的总字数,实际强制性从键盘只能读入n-1个字符。
2、strlen函数遇结束符就会停止,返回结束符之前的字符数。
3、在scanf函数中,可以使用%c来读取一个字符,使用%s读取一个字符串,但是读取字符串时读到空格为止,因此只能读取一个单词,而不是整行字符串。而使用fgets可以读取一个字符串,空白符都会被当成输入。
C语言中,scanf是格式化输入的函数。在大多数的格式字符处理时,scanf会忽略回车。要读取回车,只有使用%c的格式。
%c格式,对应变量为char型,功能为读取一个字符,并存入到对应的字符型变量中。
比如,循环读取字符,直到遇到回车结束,可以写作
char c;
while(1)
{
scanf("%c",&c);
if(c == '\n') break;//读取到换行符,即回车,退出循环。
}
scanf的返回值类型为int,值由后面的参数决定,返回值表示成功读入的数据的个数
如:scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
参考资料: http://baike.baidu.com/view/1390039.htm
char c;
scanf("%c",&c);
if(c=='\n')printf("Yes")