使用scanf()函数的C编程中的意外输出

use*_*181 -1 c scanf

我在这样的C编程中获得了意外的输出(https://imgur.com/a/4aopLjI)。

#include<stdio.h>

int main(void) {
    int i,j;
    scanf("%d ",&i);
    scanf("%d ",&j);
    printf("\n%d \n",i);
    printf("%d",j);
}
Run Code Online (Sandbox Code Playgroud)

该程序似乎接受3个输入,仅显示前两个,我也不知道为什么。有任何想法吗 ?

Sun*_*lly 5

scanf说,

格式字符串由一系列指令组成,这些指令描述了如何处理输入字符的序列。

指令是以下之一:

  • 一系列空格字符(空格,制表符,换行符等;请参见isspace(3))。此伪指令匹配输入中任何数量的空格,包括无空格。
  • ...

这意味着任何带有伪指令as的空格字符%d<space>都会读取一个数字,然后在输入中使用一系列空格字符,并且仅在键入非空格字符之前返回。那你如何能够另外提供一个数字。