以下C代码显示:格式'%s'期望类型为'char *'的参数,但是参数3的类型为int

时间:2020-06-28 16:22:24

标签: c pointers types arguments

以下代码显示格式'%s'期望类型为'char *'的参数,但第139行的类型为'int'。我看不到变量类型有任何错误。在scanf上存在此问题。除了这个问题,还有3个相关的问题。我一直在尝试并得到同样的错误。我问是否有人可以帮忙?

这是结构:

class="transition-link"

这是完整的代码:

struct employee
    {
            char name[50];
            char sex;
            char adrs[50];
            char dsgn[25];
            int age,empID;
            float slry;
    };

1 个答案:

答案 0 :(得分:0)

您没有正确遵循格式,即:在打印字符时,您正在使用%s,例如:在printf("\n%s %s %s %s %d %.2f %d",e.name,e.sex,e.adrs,e.dsgn,e.age,e.slry,e.empID);中,您正在为%s使用e.sex只是一个角色。 并使用%s多次通过e.sex来获取类似scanf的字符输入,例如:scanf("%s %s %s %s %d %.2f %d",e.name,e.sex,e.adrs,e.dsgn,&e.age,&e.slry,&e.empID);,请改用%c。 修正这些格式,同时以格式化的方式获取输入和打印输出,请参见。

您可以从printf man pagescanf man page寻求帮助。