c - 使用 Break 终止 for 循环

标签 c file-handling

所以,一个非常基本的程序,我希望允许用户在文本文件中输入最多 10 个单词。

我想做一个退出子句,这样如果用户输入一个特定的词,程序就会停止

我正在尝试使用 strcmp 并将“exit”与用户输入的词进行比较。 如果两者匹配,则终止。我知道如果两者相同则返回 0,但是我无法写:

{
char word[10];
FILE *fp;
int x;
int words = 0;

fp = fopen("c:\\CTEMP\\ExamProg1.txt", "w+");

{

    for (x = 0; x < 10; x++)

    {
        printf("\nType the word you want to add. Type exit to terminate: ");
        scanf("%s", word);

        if (strcmp(word, "exit") == 0)
        {
            break;
        }

        fprintf(fp, "%s\n", word);
        words++;
    }

    fclose(fp);
 }

scanf_s("%d");

}

我怎样才能在输入 exit 时继续中断程序,而不是必须插入两次“exit”?

最佳答案

您的代码有很多问题:

  1. scanf("%s", &word); 因为字符串本身就是一个指针或数组,所以在调用 scanf 将扫描的输入读入字符串。只需使用:scanf("%s", word);

  2. strcmp(word, "exit")=0= 运算符是赋值运算符,而不是比较运算符(您想要的是 strcmp(word, "exit") == 0)。您对单词“exit”的测试失败了,因为您没有正确检查 strcmp 的返回值。

关于c - 使用 Break 终止 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834203/

相关文章:

c - 没有编译器错误,但某处有错误

c - 井字游戏获胜功能

c++ - 在 UNIX 中使用 _exit 时,未清理的资源会发生什么情况?

c++ - C/C++ 有效指针,但获取 EXC_BAD_ACCESS 和 KERN_INVALID_ADDRESS

c - 通过带有 Codejam 问题的终端进行输入/输出

c - 如何在 YACC 语法中回显输入文本?

c - C语言中如何查找字符串

c++ - 这个 C++ 程序出了什么问题?

c - fprintf 后文件指针设置为 NULL

c++ - 如何逐行读取文件或一次读取整个文本文件?