scanf(“%* [^ \ n]”);在c程序中使用?

时间:2019-12-03 12:21:40

标签: c scanf

我有一个作业,需要找出scanf("%*[^\n]");在c程序中的作用。我知道[^\n]意味着直到\n都会读取输入,并且%*将输入放入缓冲区并丢弃。我不知道您可以从中使用什么,因为据我了解,它只会读取输入,直到\n并丢弃。

1 个答案:

答案 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',则无法读取任何内容)