C ';对于';循环似乎循环了两次

C ';对于';循环似乎循环了两次,c,C,我正在编写一个程序,在C语言中对一个文本文件执行简单的输入/输出操作。假设它向用户显示几个选项,然后执行所选操作并重新显示所述选项。我遇到的问题是,我使用的for循环似乎循环了两次,因此显示的选项是两次。我不确定我做错了什么,任何帮助都会被感激的 代码如下: 以下是输出: 请从砍伐选项中选择: 按可搜索一个单词 按(L)可在屏幕上显示指定数量的文本行 按(A)将新内容附加到文件中 按(Q)退出 请输入选项:s 试验 请从砍伐选项中选择: 按可搜索一个单词 按(L)可在屏幕上显示指定数量的文本行

我正在编写一个程序,在C语言中对一个文本文件执行简单的输入/输出操作。假设它向用户显示几个选项,然后执行所选操作并重新显示所述选项。我遇到的问题是,我使用的for循环似乎循环了两次,因此显示的选项是两次。我不确定我做错了什么,任何帮助都会被感激的

代码如下:

以下是输出:

请从砍伐选项中选择:

按可搜索一个单词 按(L)可在屏幕上显示指定数量的文本行 按(A)将新内容附加到文件中 按(Q)退出

请输入选项:s 试验

请从砍伐选项中选择:

按可搜索一个单词 按(L)可在屏幕上显示指定数量的文本行 按(A)将新内容附加到文件中 按(Q)退出

请输入选项:无效输入

请从砍伐选项中选择:

按可搜索一个单词 按(L)可在屏幕上显示指定数量的文本行 按(A)将新内容附加到文件中 按(Q)退出


请输入选项:

我猜问题在于getchar()从stdin(您将输入放入控制台的地方)中仅读取1个字符 因此,它不会读取您在第一个循环中插入到输入流中的结束行(enter),这就是为什么当您在第二次调用getchar时,您会得到无效的输入

改用scanf之类的工具,或者更好地将行读入 char*buffer并在缓冲区上工作,而不是直接使用stdin。

printf(“无效输入“%c”!\n”,选项)else
中输入code>,您会找到答案的。
for (;;) {
    printf("\nPlease choose from the fellowing options: \n\n");
    printf("Press (S) to sreach for a word\n");
    printf("Press (L) to display specified number of text lines to the screen\n");
    printf("Press (A) to append new content to the file\n");
    printf("Press (Q) to quit\n\n");
    printf("Please enter option: ");
    option = getchar();

    if (option == 'S' || option == 's') {
        //Search for a word in file.
        printf("Test\n");           
    }
    else if (option == 'L' || option == 'l') {
        //Display number of line specified by user.
        printf("Test\n");           
    }
    else if (option == 'A' || option == 'a') {
        //Append new content into file.
        printf("Test\n");           
    }
    else if (option == 'Q' || option == 'q') {
        //Quit program.
        exit(EXIT_SUCCESS);
    }
    else {
        printf("Invalid input!\n");
    }       
}