使用scanf结合EOF判断出现问题
想录入所有输入的单词,再倒序输出单词,代码如下:#include<cstdio>
int main (){
char word;
int i=0;
while(scanf("%s",word)!=EOF){
i++;
}
for(int j=i-1;j>=0;j--){
printf("%s",word);
if (j!=0){
printf(" ");
}
}
return 0;
}
但是出现问题,调试时循环卡在while(第五行)不动了。我输入 hellow world here i come,但是只有hellow录入到了word[][]里。上传了调试时的截图。
本帖最后由 耻思lhj 于 2020-4-16 22:26 编辑
因为scanf函数遇到空格自动结束,还有你这个while是死循环 本帖最后由 耻思lhj 于 2020-4-16 22:55 编辑
#include<cstdio>
#include<string.h>
int main (){
char word;
int i=0;
printf("输入字符串(exit退出输入):");
while(scanf("%s",word)!=EOF){
if(strcmp(word, "exit")==0 )
{
break;
}
i++;
}
for(int j=i-1;j>=0;j--){
printf("%s",word);
if (j!=0){
printf(" ");
}
}
return 0;
}
输入(用空格隔开,最后回车)hello world here i come,会分别存入下标word到,输入exit退出 耻思lhj 发表于 2020-4-16 22:54
输入(用空格隔开,最后回车)hello world here i come,会分别存入下标word到,输入exit退出
好像在我的源代码里,输入ctrl+z就可以结束输入
页:
[1]