Leng_Mo 发表于 2022-3-29 20:51:44

为什么我的第二个scanf运行不了?

为什么我的第二个scanf运行不了?VS2022
#include<stdio.h>
int main()
{
        char a, b;
        scanf_s("%c", &a);
        printf("%c\n", a);
        scanf_s("%c", &b);
        printf("%c\n", b);
        return 0;
}

傻眼貓咪 发表于 2022-3-29 20:54:16

#include<stdio.h>
int main()
{
    char a, b;
    scanf_s("%c", &a, 1); // <--------- 注意这里 --------
    printf("%c\n", a);
    scanf_s("%c", &b, 1); // <--------- 注意这里 --------
    printf("%c\n", b);
    return 0;
}

2877455773 发表于 2022-3-29 21:41:09

因为'\n'是一个字符被第二个scanf_s读取到并放到b里了,然后为什么没有输出?因为是换行所以没输出,你可以发现你输出完会自己换行,所以字符串在使用scanf_s时需要对缓冲区清空这样就不会出现时效问题了。
页: [1]
查看完整版本: 为什么我的第二个scanf运行不了?