如果我想在 C 中接收一个字符输入,我将如何检查是否发送了额外的字符,如果是,我将如何清除它?
是否有一个类似于 getc(stdin) 的函数,但它不会提示用户输入字符,所以我可以输入while(getc(stdin)!=EOF);
?或者一个函数来查看缓冲区中的下一个字符,如果它不返回 NULL (或那里的任何内容),我可以调用一个(另一个)函数来刷新标准输入?
Edit
所以现在, scanf 似乎正在做这个伎俩,但有没有办法让它读取整个字符串,直到换行符?而不是到最近的空白?我知道我可以将“%s %s %s”或其他内容放入格式字符串中,但我可以处理任意数量的空格吗?
您无法刷新输入流。如果这样做,您将调用未定义的行为。你最好的选择是:
int main() {
int c = getchar();
while (getchar() != EOF);
return 0;
}
To use scanf
magic:
#include <stdio.h>
#include <stdlib.h>
#define str(s) #s
#define xstr(s) str(s)
#define BUFSZ 256
int main() {
char buf[ BUFSZ + 1 ];
int rc = scanf("%" xstr(BUFSZ) "[^\n]%*[^\n]", buf);
if (!feof(stdin)) {
getchar();
}
while (rc == 1) {
printf("Your string is: %s\n", array);
fflush(stdout);
rc = scanf("%" xstr(LENGTH) "[^\n]%*[^\n]", array);
if (!feof(stdin)) {
getchar();
}
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)