#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 在这里如何工作?
最佳答案
scanf 格式的白色字符与输入中的白色字符序列匹配,直到出现非白色字符为止。
换行符是一个白色字符,这解释了程序的行为。这意味着,如果您的 scanf 格式以换行符终止,则直到在最后一次解析的输入后看到额外的非空白字符时,它才会完成。
关于c - 如果我在末尾添加新行 '\n',scanf 将如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23033265/