当用户点击进入时结束while循环,不能使用#include <string.h>

时间:2016-10-25 01:12:15

标签: c fgets

在这种情况下,用户输入是使用fgets从stdin获取的。通常在用户点击输入时结束while循环我会在fgets值和\ n之间使用strcmp,但我们不允许在此特定赋值中使用#include <string.h>。使用C99。

1 个答案:

答案 0 :(得分:0)

你不能,因为fgets()函数在找到\n时返回

我假设您的意思是当用户输入单个\n时没有其他内容。使用fgetc()代替它可能会更好,这将返回\n

这意味着您需要自己缓冲inout,如下所示:

char    inputBuffer[120] = "";

char    ch;
char    chCount = 0;

while (1) {
    ch = fgetc(stdin);

    if (ch == '\n') {
        /* Empty buffer? */
        if (inputBuffer[0] == '\0')
            /* Oui! */
            break;

        /* Buffer isn't empty - do something with it... */
        fprintf(stdout, "Input buffer: %s\n", inputBuffer);

        /* Clear the buffer for the next line of input and reset the
         * counter. */
        inputBuffer[0] = '\0';
        chCount = 0;
    }
    else {
        if (chCount < 119) {
            /* Add the byte to the buffer. */
            inputBuffer[chCount++] = ch;
            inputBuffer[chCount] = '\0';
        }
    }

}

如果输入单个\n,上面的循环将输出任何输入字符串或中断。