c语言 scanf 和 读取回车

我想用scanf读文件( program<filename.inp),不是在程序里用fgets读
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++;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-10

#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可以读取一个字符串,空白符都会被当成输入。

本回答被网友采纳
第2个回答  推荐于2017-09-05

C语言中,scanf是格式化输入的函数。在大多数的格式字符处理时,scanf会忽略回车。要读取回车,只有使用%c的格式。

%c格式,对应变量为char型,功能为读取一个字符,并存入到对应的字符型变量中。

比如,循环读取字符,直到遇到回车结束,可以写作

char c;
while(1)
{
    scanf("%c",&c);
    if(c == '\n') break;//读取到换行符,即回车,退出循环。
}

第3个回答  2011-09-12
注意下判断语句,其实你是在拿scanf的返回值在和EOF或\n比较!!
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

本回答被提问者采纳
第4个回答  2015-10-23
scanf读取回车?

char c;
scanf("%c",&c);
if(c=='\n')printf("Yes")
相似回答