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

时间:2014-04-12 16:42:35

标签: c newline scanf

#include <stdio.h>
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如何在这里工作? 在这种情况下:

#include <stdio.h>  

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如何在这里工作?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

scanf仅用于输入值,现在您需要的是将输出显示在新行上,基本上,您希望在屏幕上显示换行符,因此必须使用{{1 \n中的}},因为要打印新行。关于为什么要输入四行,我不确定,语法说必须使用printf和一个字母对于要接受的数据类型,我将详细阅读并取回。 谢谢。