输入所有数据后立即发生错误。

时间:2018-12-26 08:27:25

标签: c structure

我正在用C编写一个小程序来记录一个人的姓,名和年龄。我正在尝试使用结构来做到这一点 添加年龄后,它就会出错。

我尝试使用fscanf fgets等。但是没有运气

#include <stdio.h>
#include <printf.h>
#include "personne.h"


int main() {


    Pers user1;

    printf("What's your given name ?");
    scanf("%s",user1.givenname);
    printf("What's your last name ?");
    scanf("%s",user1.lastname);
    printf("What's your age ?");
    scanf("%d",user1.age);

    printf("Your name is %s %s and you're %d years old",user1.givenname,user1.lastname,user1.age);


    return 0;
}


======================================================================

这是我的头文件

#ifndef TABLEAU_DE_TYPEPERSONNE_PERSONNE_H
#define TABLEAU_DE_TYPEPERSONNE_PERSONNE_H

#endif //TABLEAU_DE_TYPEPERSONNE_PERSONNE_H


typedef struct Personne Pers;

struct Personne{
    int age;
    char lastname[100];
    char givenname[100];
    char address[1000];


};

通常在最后,它应该打印信息。

1 个答案:

答案 0 :(得分:2)

要使scanf正确填充该值,必须将该值的地址传递给函数,在您的示例中,所有名称均为数组,因此当您传递其名称时,您将传递指针,但是age字段是而不是数组,因此您应该使用&运算符传递地址,因此只需更改为该地址即可。

scanf("%d", &user1.age)