为什么上面那个在scanf里面空格了就能输出正常

img

img


为什么上面那个在scanf里面空格了就能输出正常,下面那个scanf里面的元素没空格就不行?

img

img

你输入格式要与代码一致
如果代码里没空格,那么输入到%c的时候也必须这样88c4.7,不能有空格,否则%c得到的是个空格

空格也是字符啊。scanf中的格式必须和你输入一一对应才行。如果输入带空格,那么你的%c前面就要加空格,否则%c就接收空格字符了啊

因为下面这个scanf没使用空格,会在读取了输入的88后,会把把后面的空格读取到字符变量c中了。

上面那个scanf中使用了空格,会忽略输入的一个空格,然后正确的把输入中的字符'c'读取到了字符变量c中。

测试代码如下:

参考链接:


http://ascii.wjccx.com/

#include <stdio.h>
#include <stdlib.h>
int main(void){
    
    int b;
    char c;
    double a1,a2;
    scanf("%lf %d %c %lf",&a1,&b,&c,&a2);
    printf("%c %d %.2f %.2f\n\n",c,b,a1,a2);
    
    fflush(stdin);
    int b2;
    char c2;
    double a12,a22;
    
    scanf("%lf%d%c%lf",&a12,&b2,&c2,&a22);
    // http://ascii.wjccx.com/ 
    printf("%c %d %.2f %.2f",c2,b2,a12,a22);
//    printf("c2=%c,c2=%d\n",c2,c2);
    
    
    
    return 0;
} 

img