Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C中的结构开始_C_Pointers_Struct - Fatal编程技术网

从C中的结构开始

从C中的结构开始,c,pointers,struct,C,Pointers,Struct,每次我试图编译下面的代码时,都会出现大量错误。 有人看到我在C程序中忽略的任何明显的东西吗。任何帮助都将不胜感激。 还附加了头文件structures.h 这是structures.cc文件 #include <stdio.h> #include <string.h> #include "structures.h" void getOnePerson(person_t *p) { char *name; char *ssn; int *year; printf("En

每次我试图编译下面的代码时,都会出现大量错误。 有人看到我在C程序中忽略的任何明显的东西吗。任何帮助都将不胜感激。 还附加了头文件structures.h

这是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”
void getOnePerson(person_t*p){
字符*名称;
char*ssn;
国际*年;
printf(“输入全名:”);
scanf(“%s”、&name);
p、 name=&name;
printf(“\n输入ssn:”);
scanf(“%s”和&ssn);
p、 ssn=&ssn;
printf(“\n出生年份:”);
scanf(“%d”,年份);
p、 出生年份=&year;
}
无效打印一人(一人){
char*name=t1.name;
char*ssn=t1.ssn;
int year=t1.出生年份;
printf(“%s”和名称);
printf(“:”);
printf(“%s”和&ssn);
printf(“:”);
printf(“%p”、&year);
printf(“\n”);
}
void getPeople(person\u t people[],int people){
for(int a=0;a
这是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);
#包括
#包括
#定义名称\u大小80
#定义SSN_尺寸13
#定义人数10
类型定义结构{
字符名称[名称大小];
字符ssn[ssn_大小];
出生年份;
}个人;;
无效getOnePerson(结构人\u t*p);
无效打印人(结构人);
void getPeople(结构人员[],内部人员);
无效打印人员(结构人员[],内部人员);

头文件中的函数声明不正确

您引用了一个或多个类型为
struct person\u t
的参数,但没有这样的类型。有一个名为
person\u 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);
get和print函数也有几个问题。在这两种情况下,您都使用中间变量来读取/写入不必要的值:

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");

}

您能给我们看一下您的错误输出吗?
char*name。。。scanf(“%s”、&name)将失败。没有文本内存。编译器应该警告错误匹配的类型。好的,我现在理解了头文件中的函数原型。但是,您编辑的两个方法需要一组person\t结构。这将如何实现?@Jwils222:为什么“打印一个人”需要一系列结构?