我正在用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];
};
通常在最后,它应该打印信息。
答案 0 :(得分:2)
要使scanf正确填充该值,必须将该值的地址传递给函数,在您的示例中,所有名称均为数组,因此当您传递其名称时,您将传递指针,但是age字段是而不是数组,因此您应该使用&运算符传递地址,因此只需更改为该地址即可。
scanf("%d", &user1.age)