我需要这样做,以便当没有为 charTeacherFirstName 输入任何内容(按下 Enter 键)时,此循环停止输入。我有这个,但问题是,如果按下回车键,循环就会继续询问内容,就好像它没有读取空白一样。
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');
}
最佳答案
首先你的代码是错误的。 charTeacher...Name
是一个 2dim 数组,您不能像这样使用它。那么 ...Salary
是 int
但你用 fgets
读取它,而它不兼容。
此外,您无法比较 string
和 char
,这些东西有很大不同。
所以 char 就是顾名思义。单个字符。 'a'、'b'、'!'、'5'
是字符。当您对它们进行直接引用时,您需要将它们放在单引号 '...'
之间。
字符串是一系列字符(“abc”、“食物”、“天气真好”
。您可以将它们视为数组,正如您所声明的那样。它们也可以是声明为字符上的指针,然后您将需要使用malloc(N * sizeof(char))
(或类似的东西)来获取操作所需的内存。当您想要立即引用字符串必须放在双引号之间 ("..."
)。字符串必须以 NULL
字符结尾(即 '\0'
)。
我想说,这与您在每种情况下对 int
和 int []
或 int *
所说的相同。
为了比较字符串,您需要使用strcmp
。使用 man strcmp
查看它的使用方式、返回内容以及您需要 #include
的库。
您的条件应为 if (strcmp(charTeacherFirstName, "\n") == 0) break;
关于c - 当在c中输入空行时如何使此代码中的循环停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40349965/