C - 在没有'enter'的情况下刷新stdin输入缓冲区

时间:2016-08-21 08:19:49

标签: c buffer stdin

我知道有很多问题,但我需要一个解决方案来刷新STDIN输入缓冲区,而无需按任何键或“输入”。

我正在使用fgets(char, size, char)(在循环中)从键盘获取输入流,我想只按1'输入'并转到下一个输入而不分配stdin缓冲区(如果是缓冲区)比 fgets 上指定的更大,第一个char数组将是好的,但循环中的下一个 fgets 将在下一个char数组上写入剩余的缓冲区)

SO上的大多数解决方案都是这样的:

/** deletes the buffer on stdin */
void flushStdin(){
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}

但这需要按'输入'。我的整个代码看起来像这样:

void readString(char *arrayString){

    fgets(arrayString, BUF_SIZE * sizeof(arrayString), stdin); //1st Enter here
    flushStdin(); //2nd Enter here

    //Deletes the newline '\n' at the end
    size_t len = strlen(arrayString);
    if (len > 0 && arrayString[len-1] == '\n')
        arrayString[--len] = '\0';

    return;
}

谢谢!

0 个答案:

没有答案