scanf问题
#include <stdio.h>void main()
{
char c;
int i,x;
for(i=0;i<13;i++)
{
x=scanf("%c",&c);
// fflush(stdin);
printf("%d\n",x);
printf("%c\n",c);
}
}
怎么scanf的返回值就没有看到过EOF和-1的字样,我想用迭代做这个字符串的输入,根本找不到停止条件。
这里我输入的是字符串,中间有空格之类的。
请大神帮忙解决一下~ 本帖最后由 ryxcaixia 于 2015-8-17 14:25 编辑
int main(void)
{
char c;
int ret;
while((ret = scanf("%c", &c)) != EOF)
{
printf("%c \t %d\n", c, ret);
fflush(stdin);
}
printf("EOF == %d\n", ret);
return 0;
}
scanf有返回值
EOF就是-1
少年 这段 在你输入字符的时候 按一下ctrl + c 就能看到-1了 scanf()!=EOF,这个返回值没有啊,scanf压根就没有返回EOF 是什么意思? EOF是一个宏 本身就代表了int(-1)
#define EOF (-1)
这是stdio.h里定义的 你们的意思,我要我按ctrl + c ?才会读入-1,我按下回车后,scanf的返回值永远不是-1?
我按ctrl + c 程序直接关了。。 大哥你的程序没看到-1 这个程序还是永远退补出去啊,你上机试试! 大哥还在吗? 骇客king 发表于 2015-8-17 14:31
大哥还在吗?
EOF 是 end of file的意思
ctrl + c 意思就是结束输入
默认为是-1
你不加断点 自然程序结束
如果用的是vs系列 用F9打个断点 #include <stdio.h>
int pr()
{
char c;
scanf("%c", &c);
if(c!=10)//10为换行可以退出,32为空格,当输入空格时退出.
{
printf("%c", c);
pr();
}
else
{
return 0;
}
}
int main(void)
{
pr();
printf("\n");
}
实现自动退出啦~ ryxcaixia 发表于 2015-8-17 15:13
EOF 是 end of file的意思
ctrl + c 意思就是结束输入
默认为是-1
就是说,-1这个值是人为输入进去,不是scanf读到回车后自动加上的哈~ ryxcaixia 发表于 2015-8-17 15:13
EOF 是 end of file的意思
ctrl + c 意思就是结束输入
默认为是-1
我按下ctrl + c,加了断点,调试器就报错了,还是没显示-1,是不是应该输入ctrl + z啊? ryxcaixia 发表于 2015-8-17 15:13
EOF 是 end of file的意思
ctrl + c 意思就是结束输入
默认为是-1
我按下ctrl + c,加了断点,调试器就报错了,还是没显示-1,是不是应该输入ctrl + z啊? 本帖最后由 ryxcaixia 于 2015-8-17 16:07 编辑
可以这么说 -1是人为定义的 你按了键盘的ctrl +c 等 就相当于丢了一个-1进去 相应输入流的末尾 这个输入可以是从文件 也可以从键盘
不同的操作系统可能不一样 windows一般是ctrl c linux下ctrl+d 或者ctrl+z多一些 路过:call:
页:
[1]