茶叶仓鼠 发表于 2020-4-16 22:05:01

使用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:16:50

本帖最后由 耻思lhj 于 2020-4-16 22:26 编辑

因为scanf函数遇到空格自动结束,还有你这个while是死循环

耻思lhj 发表于 2020-4-16 22:54:22

本帖最后由 耻思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退出

茶叶仓鼠 发表于 2020-4-17 20:55:53

耻思lhj 发表于 2020-4-16 22:54
输入(用空格隔开,最后回车)hello world here i come,会分别存入下标word到,输入exit退出

好像在我的源代码里,输入ctrl+z就可以结束输入
页: [1]
查看完整版本: 使用scanf结合EOF判断出现问题