我知道有很多问题,但我需要一个解决方案来刷新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;
}
谢谢!