c语言 scanf 和 读取回车

我想用scanf读文件(program<filename.inp),不是在程序里用fgets读while(scanf("%[^\n]",string)!=EOF){//程... 我想用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
展开
 我来答
大野瘦子
高粉答主

2019-07-17 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:32万
展开全部

注意下判断语句,其实是在拿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++;
}

小星星教育知识分享
高粉答主

2019-12-10 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67129

向TA提问 私信TA
展开全部

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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
推荐于2017-09-05 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450103
专业C/C++软件开发

向TA提问 私信TA
展开全部

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

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

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

char c;
while(1)
{
    scanf("%c",&c);
    if(c == '\n') break;//读取到换行符,即回车,退出循环。
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nickwlf
2011-09-12
知道答主
回答量:9
采纳率:0%
帮助的人:15.5万
展开全部
注意下判断语句,其实你是在拿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

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Qc250不解释
2015-10-23 · TA获得超过326个赞
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:52.5万
展开全部
scanf读取回车?

char c;
scanf("%c",&c);
if(c=='\n')printf("Yes")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式