Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scanf格式字符串中的非空白字符_C_Scanf - Fatal编程技术网

scanf格式字符串中的非空白字符

scanf格式字符串中的非空白字符,c,scanf,C,Scanf,我有一个关于scanf函数在遇到格式字符串中的非空白字符时所采取的过程的问题。根据我正在读的书: 当scanf函数遇到格式字符串中的非空白字符时,scanf将其与下一个输入字符进行比较。如果两个字符匹配,scanf将丢弃输入字符并继续处理格式字符串。如果字符不匹配,scanf将有问题的字符放回输入,然后在不进一步处理格式字符串或读取输入字符的情况下中止 我有点困惑。它表示scanf将其与下一个输入字符进行比较,如果两个字符匹配,scanf将丢弃该输入字符。为什么我们说它与“下一个”输入字符相比较

我有一个关于scanf函数在遇到格式字符串中的非空白字符时所采取的过程的问题。根据我正在读的书:

scanf
函数遇到格式字符串中的非空白字符时,
scanf
将其与下一个输入字符进行比较。如果两个字符匹配,
scanf
将丢弃输入字符并继续处理格式字符串。如果字符不匹配,
scanf
将有问题的字符放回输入,然后在不进一步处理格式字符串或读取输入字符的情况下中止

我有点困惑。它表示
scanf
将其与下一个输入字符进行比较,如果两个字符匹配,
scanf
将丢弃该输入字符。为什么我们说它与“下一个”输入字符相比较

这是否意味着如果我们有一个格式字符串
scanf(“%d/%d”、&x和&y)
和输入
2/4
scanf
与四个进行比较,因为它是
//code>中的下一个输入字符。

描述
scanf
的另一种方式是,对于非空白字符,它跟随输入,并显示格式字符串中的内容。然而,如果它找到了另一个读卡器,它将“未读”该字符,然后完全停止扫描

例如,让我们看看:

intx,y;
int scanned=scanf(“%dabc%d”、&x和&y);
如果我们给它输入
10abc20
,则它按以下顺序运行:

  • 它到达
    %d
    ,读取
    10
    ,并将其存储在
    x
  • 它一个接一个地读取
    abc
    ,并跟随格式字符串中给定的
    abc
  • 它到达
    %d
    ,读取
    20
    ,并将其存储在
    y
  • 它到达格式字符串的末尾,返回扫描两个值的值
    2
  • 离开代码后,将使用输入中的所有字符
改为使用相同的程序
10abz20

  • 它到达
    %d
    ,读取
    10
    ,并将其存储在
    x
  • 它正确地读取
    ab
    ,但当它到达
    z
    时,会取消读取该字符,并提前返回值
    1
    ,因为它只扫描第一个数字
  • 离开代码,
    z20
    未读,以后可能会在程序中读取

因此,在您的示例中,
scanf(“%d/%d”,&x,&y)
,输入的
10/20
将完全扫描,但
10d20
只将
10
扫描到x中,而将
d20
保留为未读。另一方面,
10/20
10/20
完全扫描,但
10/20
不扫描。

不,
%d
读取
2
,下一个输入字符是
//code>,并与格式字符串中的
//code>进行比较。然后
%d
读取
4