69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[1024] = {'\0'};
int i = 0;
char ch;
ch = getchar();
while(ch != EOF)
{
str[i] = ch;
i++;
ch = getchar();
}
printf("%s", str);
return 0;
}
不好意思,刚刚发现这段代码有个bug,具体说不清
反正这个bug很怪异,而且这个bug是在VS2008测试出的,
如果在VC6.0中按“Ctrl+C”后则直接退出了程序
这个bug让我很无解,想深入研究也不知从何着手啊
深感水太深啊,这么小的问题,居然解决了这么长时间
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[1024] = {'\0'};
int i = 0;
char ch;
ch = getchar();
while(ch != EOF)
{
str[i] = ch;
i++;
ch = getchar();
}
printf("%s", str);
return 0;
}
不好意思,刚刚发现这段代码有个bug,具体说不清
反正这个bug很怪异,而且这个bug是在VS2008测试出的,
如果在VC6.0中按“Ctrl+C”后则直接退出了程序
看来目前只能采用你的方法了,但这个bug让我很无解
想深入研究也不知从何着手啊
while(ch)
//你代码判断是ch 和中断输入有什么关系?
while(ch != EOF)
//这样吧
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[1024] = {'\0'};
int i = 0;
char ch;
scanf("%c", &ch);
while(ch)
{
str[i] = ch;
i++;
scanf("%c", &ch);
}
printf("%s", str);
return 0;
}
使用Ctrl+Z是无法中断标准输入的,已试过
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[1024] = {'\0'};
int i = 0;
char ch;
ch = getchar();
while(ch != EOF)
{
str[i] = ch;
i++;
ch = getchar();
}
printf("%s", str);
return 0;
}
不会出现我说的那个情况,不过需要按Ctrl+C中断输入,而不是Ctrl+Z