c - 当在c中输入空行时如何使此代码中的循环停止

标签 c arrays input fgets

我需要这样做,以便当没有为 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 数组,您不能像这样使用它。那么 ...Salaryint 但你用 fgets 读取它,而它不兼容。

此外,您无法比较 stringchar,这些东西有很大不同。

所以 char 就是顾名思义。单个字符。 'a'、'b'、'!'、'5' 是字符。当您对它们进行直接引用时,您需要将它们放在单引号 '...' 之间。

字符串是一系列字符(“abc”、“食物”、“天气真好”。您可以将它们视为数组,正如您所声明的那样。它们也可以是声明为字符上的指针,然后您将需要使用malloc(N * sizeof(char))(或类似的东西)来获取操作所需的内存。当您想要立即引用字符串必须放在双引号之间 ("...")。字符串必须以 NULL 字符结尾(即 '\0')。

我想说,这与您在每种情况下对 intint []int * 所说的相同。

为了比较字符串,您需要使用strcmp。使用 man strcmp 查看它的使用方式、返回内容以及您需要 #include 的库。

您的条件应为 if (strcmp(charTeacherFirstName, "\n") == 0) break;

关于c - 当在c中输入空行时如何使此代码中的循环停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40349965/

相关文章:

c - 我们什么时候使用 goto *expr;在C?

javascript - NodeJS 模块 - 填充数组变成空对象。为什么?

java - 检查数组是否已分配大小

javascript - 获取n个数组的交集

c - fgets 在换行符后包含文本

无法在代码中找到错误的原因

c - 如何更新 C 中显示的时间?

c - 使用 fscanf 计算单词出现的次数

html - 从 Angular 中的输入控件更新 URL

jquery - 为什么我的 jquery 输入掩码不起作用?