请看代码,为什么不打印

img


请问在终端输入后,为什么最后一个print不打印。我将输入部分封装成函数也不好使。

#include<stdio.h>
struct worker
{
    char name[20];
    int number;
    int age;
    float salary;
};
int main()
{
    /*struct  worker w = { "zhangsan",1001,30,8000 };
    struct worker* p=&w;
    printf("%s %d %d %f\n", w.name, w.number, w.age, w.salary);
    printf("%s %d %d %f\n", p->name, p->number, p->age, p->salary);*/

    struct worker w1;
    printf("请输入工人名字 编号 年龄 工资\n");
    scanf_s("%s%d%d%f", w1.name,&w1.number,&w1.age,&w1.salary);
    printf("工人名字:%s 编号:%d 年龄:%d 工资:%f\n", w1.name, w1.number, w1.age, w1.salary);
    return 0;
}

scanf_s 改成 scanf 试试

img

在读取完salary后,输入缓冲区中还有一个换行符,导致下一个 printf 函数在执行时读取到了这个换行符,然后就直接结束了。
可以进行如下修改

scanf_s("%s%d%d%f ", w1.name,&w1.number,&w1.age,&w1.salary);
//或
scanf_s("%s%d%d%f", w1.name,&w1.number,&w1.age,&w1.salary);
getchar();

如有帮助给个采纳 谢谢

这样改,见注释,供参考:

#include<stdio.h>
struct worker
{
    char name[20];
    int number;
    int age;
    float salary;
};
int main()
{
    /*struct  worker w = { "zhangsan",1001,30,8000 };
    struct worker* p=&w;
    printf("%s %d %d %f\n", w.name, w.number, w.age, w.salary);
    printf("%s %d %d %f\n", p->name, p->number, p->age, p->salary);*/

    struct worker w1;
    printf("请输入工人名字 编号 年龄 工资\n");
    scanf_s("%s%d%d%f", w1.name, 20, &w1.number, &w1.age, &w1.salary); // 修改
    //scanf_s("%s%d%d%f", w1.name, &w1.number, &w1.age, &w1.salary);
    printf("工人名字:%s 编号:%d 年龄:%d 工资:%f\n", w1.name, w1.number, w1.age, w1.salary);
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^