gpt4 book ai didi

c - 为什么在用户输入第一个命令后我会打印两次此消息?

转载 作者:行者123 更新时间:2023-11-30 15:41:55 24 4
gpt4 key购买 nike

我已经编写了所有代码,一切都正确,但由于某种原因,消息“输入命令或输入'Q'退出:”在输入第一个命令后打印了两次。

我只需要帮助弄清楚为什么该消息不断打印两次。我和我的导师一起研究过这个问题,我们似乎无法弄清楚为什么在第一次输入/命令后该消息会打印两次。他将不胜感激任何帮助!

这是我的代码:

int main() {
studentType s[MAX_STUDENTS];
teacherType t[MAX_TEACHERS];
char input[MAX_NAME];
int numS, numT;
char command;
FILE * out;

numS = readStudentInfo(s); /* Number of students equals size of array. */
numT = readTeacherInfo(t); /* Number of teachers equals size of array. */

out = fopen("log.out", "w");

while (command != 'Q') {
printf("Enter command or enter 'Q' to quit:\n");
scanf("%c", &command);

if (command == 'S') {
scanf("%s", input);
fprintf(out, "-->%c %s\n", command, input);
getStudentInfo(s, t, input, numS, numT, out);
}

if (command == 'T') {
scanf("%s", input);
fprintf(out, "-->%c %s\n", command, input);
findStudents(s, t, input, numS, numT, out);
}

if (command == 'G') {
scanf("%s", input);
fprintf(out, "-->%c %s\n", command, input);
getGradeList(s, t, atoi(input), numS, numT, out);
}

if (command == 'L') {
scanf("%s", input);
fprintf(out, "-->%c %s\n", command, input);
findGradeTeachers(s, t, atoi(input), numS, numT, out);
}

}

if (command == 'Q') {
fprintf(out, "-->%c\n", command);
fclose(out);
return 0;
}

return 0;
}

这是我运行该程序时得到的结果:

enter image description here

正如您所看到的,消息“Enter...”唯一一次没有打印两次是在启动时,为什么会发生这种情况?提前感谢所有回答的人!

最佳答案

scanf()的每个字符串格式的开头添加一个空格:

scanf(" %c", &command);

scanf(" %s", input);

在您的代码中,换行符在 scanf("%c", &command); 中被捕获,您必须通过在字符串格式的开头添加空格来避免捕获换行符扫描的

关于c - 为什么在用户输入第一个命令后我会打印两次此消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20394325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com