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

问题描述 投票:0回答:2
#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如何在这里工作?

c newline scanf
2个回答
1
投票

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

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


0
投票

scanf仅用于输入值,现在您需要的是您的输出在新行上,基本上您需要在屏幕上打印换行符,因此您必须在\n中使用printf,因为您想要一个新行至于为什么它要求四个输入,我不确定,语法说你必须根据要接受的数据类型使用%和一个字母,我会阅读更多内容并回来。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.