如果我在末尾添加一个新行’\ n’,scanf如何工作

包括

int main(){

int a,b,c; scanf("%d%d%d\n",&a,&b,&c); printf("%d %d %d",a,b,c); return 0; 

}

看看我正在接受3个输入并打印3个输出……但是当我在scanf函数结束时添加了一个新行时,我必须给4个输入来获得3个输出(我得到前3个作为输入)… .scanf如何在这里工作? 在这种情况下:

包括

int main(){

 double n[2][5]; int i,j; for (i=0;i<=1;i++){ for(j=0;j<=4;j++){ scanf("%lf\n",&n[i][j]); printf("Class=%d Roll=%d Marks=%lf\n",i+6,j+1,n[i][j]); } } return 0; 

}

看看我必须提供11个输入才能获得10个输出…每次我输入一个输入时,我将前一个输入作为输出…… scanf如何在这里工作?

scanf格式的白色字符与输入中的一系列白色字符匹配,直到非白色字符。

换行符是一个白色字符,这解释了程序的行为。 这意味着如果您的scanf格式以换行符结束,则在最后一次解析输入后看到另一个非空白字符时,它才会完成。