【发布时间】:2016-10-31 20:20:00
【问题描述】:
我需要这样做,以便当 charTeacherFirstName 没有输入任何内容(按下回车键)时,此循环停止输入。我有这个,但问题是如果按下回车键,循环只会继续询问内容,就好像它没有读取空白一样。
int main(void)
{
int intTeacherSalary[50];
char charTeacherFirstName[50][50];
char charTeacherLastName[50][50];
do
{
printf("Enter the teacher's first name: ");
fgets(charTeacherFirstName, 50, stdin);
if (charTeacherFirstName == '\n')
{
break;
}
else
{
printf("Enter the teacher's last name: ");
fgets(charTeacherLastName, 50, stdin);
printf("Enter teacher's salary: ");
fgets(intTeacherSalary, 50, stdin);
}
} while (charTeacherFirstName != '\n');
}
【问题讨论】:
-
您在
while中的条件也是错误且无用的,因为您的if已经处理了它。编译并打开警告并阅读它们。你甚至不必在这里发帖。 -
另外,您不能使用
fgets()将ints 读入intTeacherSalary。或者至少尝试这样做会产生不太可能是您期望或想要的未定义行为。您可能想读入一个char数组,然后用sscanf()解析出int(如果有的话)。 -
if (charTeacherFirstName == '\n')你不能用这种方式测试 C 中的字符串相等性。 -
在看到
fgets(intTeacherSalary, 50, stdin);之后,我建议您需要一些时间来学习 C 教程序列。研究fgets的工作原理,您的目标变量是int[]数组。