参数类型错误

时间:2014-02-26 06:03:11

标签: c types arguments structure scanf

以下代码显示了这一点 格式'%s'期望类型' char *'的参数,但参数11的类型为' int' 格式'%s'期望类型为' char *'的参数,但参数12的类型为' int' 我没有看到变量类型中的任何错误。

typedef struct{

        char country[20];
        char town[20];
    }location;
    typedef struct{
        int birthday_day;
        int birthday_month;
        int birthday_year;
    } birthday;
    typedef struct{
        char university;
        char department;
        int year_of_graduation;
    }education;
    typedef struct{
        int id;
        char name[20];
        char surname[20];
        location place;
        birthday birth;
    education school;
        int quantity_of_friends;
        int quantity_of_likes;
        int quantity_of_posts;
    }user;

user usser[100];
int i;

for (i=0;i<100;i++){
fscanf(input,"%i %s %s %s %s %i %i %i %s %s %i %i %i %i ", &usser[i].id, usser[i].name,usser[i].surname, usser[i].place.country,usser[i].place.town, &usser[i].birth.birthday_day,&usser[i].birth.birthday_month, &usser[i].birth.birthday_year, usser[i].school.university, usser[i].school.department,&usser[i].school.year_of_graduation,    &usser[i].quantity_of_friends,&usser[i].quantity_of_likes, &usser[i].quantity_of_posts);
}

3 个答案:

答案 0 :(得分:1)

你只声明了字符变量

    char university;
    char department;

但你希望字符串能引起警告。

所以可能就像

    char university[100];
    char department[100];

答案 1 :(得分:0)

问题是这个

typedef struct{
    char university;
    char department;
    int year_of_graduation;
}education;

universitydepartment应该是char数组,而不仅仅是char。

答案 2 :(得分:0)

在教育结构中,universitydepartment只有两个单个字符,您需要将它们定义为数组

    char university[SIZE];
    char department[SIZE];