我有一个作业,需要找出scanf("%*[^\n]");
在c程序中的作用。我知道[^\n]
意味着直到\n
都会读取输入,并且%*
将输入放入缓冲区并丢弃。我不知道您可以从中使用什么,因为据我了解,它只会读取输入,直到\n
并丢弃。
答案 0 :(得分:1)
scanf(“%* [^ \ n]”);在c程序中使用?
看到fgets()
是更好的方法在某种程度上很常见。建议您在不知道为什么不使用它之前,不要使用scanf()
。然后以有限的方式使用它。
我不知道您可以从中得到什么使用
用法示例:代码尝试使用scanf("%d", &x);
读取数字文本,但是"abc\n"
在stdin
中,因此函数返回0,而stdin
中的数据仍然保留。 scanf("%*[^\n]");
清除(读取和丢弃)"abc"
,以准备新的输入行。
int x;
int count;
do {
puts("Enter number");
count = scanf("%d", &x); // count is 0, 1 or EOF
if (count == 0) {
scanf("%*[^\n]"); // Read and discard input up, but not including, a \n
scanf("%*1[\n]"); // Read and discard one \n
}
} while (count == 0);
if (count == EOF) puts("No more input");
else puts("Success");
scanf(" %*[^\n]");
和scanf("%*[^\n]%*c");
之类的变体都有自己的弯角问题(第一个使用所有前导空格,甚至多行,第二个如果下一个字符为'\n'
,则无法读取任何内容)