2017-04-06 46 views
-1

每次我尝试编译下面的代码时,都会遇到一堆错误。 有没有人看到我用C程序忽略的任何明显的事情。任何帮助,将不胜感激。 头文件structures.h也被附加。从C中的结构开始

这是structures.cc文件

#include <stdio.h> 
#include <string.h> 
#include "structures.h" 

void getOnePerson(person_t *p) { 
char *name; 
char *ssn; 
int *year; 

printf("Enter full name: "); 
scanf("%s", &name); 
p.name = &name; 
printf("\nEnter ssn: "); 
scanf("%s", &ssn); 
p.ssn = &ssn; 
printf("\nEnter year of birth: "); 
scanf("%d", year); 
p.yearOfBirth = &year; 

} 

void printOnePerson(person_t t1) { 
char *name = t1.name; 
char *ssn = t1.ssn; 
int year = t1.yearOfBirth; 
printf("%s", &name); 
printf(":"); 
printf("%s", &ssn); 
printf(":"); 
printf("%p", &year); 
printf("\n"); 

} 

void getPeople(person_t peoples[], int people) { 
for (int a = 0; a < people; a++) { 
    getOnePerson(peoples[a]); 
} 
} 

void printPeople(person_t peoples[], int people) { 
for (int p = 0; p < people; p++) { 
    peoples[p]; 
} 
} 

这是structures.h文件

#include <stdio.h> 
#include <string.h> 

#define NAME_SIZE 80 
#define SSN_SIZE 13 
#define NUM_PEOPLE 10 

typedef struct{ 
char name[NAME_SIZE]; 
char ssn[SSN_SIZE]; 
int yearOfBirth; 
}person_t; 

void getOnePerson(struct person_t *p); 
void printOnePerson(struct person_t p); 
void getPeople(struct person_t peoples[], int people); 
void printPeople(struct person_t peoples[], int people); 
+0

您能告诉我们您的错误输出吗? –

+0

'char * name; ... scanf(“%s”,&name);'会失败,没有内存的文本,编译器应该警告错误匹配的类型 – chux

回答

1

你在头文件中的函数声明是不正确的。

您引用了struct person_t类型的一个或多个参数,但没有此类型。有一个名为person_t的类型,所以更改函数原型以使用它。

void getOnePerson(person_t *p); 
void printOnePerson(person_t p); 
void getPeople(person_t peoples[], int people); 
void printPeople(person_t peoples[], int people); 

您的获取和打印功能也有几个问题。在这两种情况下,您都使用中间变量来读取/写入不必要的值:

void getOnePerson(person_t *p) { 

    printf("Enter full name: "); 
    scanf("%s", p->name); 
    printf("\nEnter ssn: "); 
    scanf("%s", p->ssn); 
    printf("\nEnter year of birth: "); 
    scanf("%d", &p->yearOfBirth); 

} 

void printOnePerson(person_t t1) { 

    printf("%s", t1.name); 
    printf(":"); 
    printf("%s", t1.ssn); 
    printf(":"); 
    printf("%d", t1.yearOfBirth); 
    printf("\n"); 

} 
+0

好吧,我现在理解头文件中的函数原型,但是,编辑需要一个person_t结构数组如何实现? – Jwils222

+0

@ Jwils222:为什么'打印1个人'需要一个结构数组? –