0
我意识到这个问题经常被问到,但我还是不太明白它是如何工作的。我想尝试将我的文件读入我的结构中,在函数内部并通过指向函数的指针传递结构。我不确定如何写函数原型。使用指针传递结构体和返回数组的结构体和返回数组 - 功能
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 90
#define STR 200
#define MAXLEN 40
struct human {
char name[MAXLEN];
char surname[MAXLEN];
int age;
float weight;
};
int main(int argc, char *argv[]) {
char *dlim= " ", *end = "\n";
char *string;
string = (char *)malloc(sizeof(char) * STR);
int i = 0, j = 0;
struct human *man = malloc(sizeof(struct human) * MAX);
FILE *fin = fopen("data.txt", "r");
if (fin == NULL) {
printf("Cannot open file\n");
exit(0);
}
while (fgets (string, STR, fin)){
read (string, &man[i], dlim, end);
i++;
}
fclose(fin);
free(string);
free(man);
return 0;
}
struct human *man read(char *fstring, struct *man, char *div, char *end){
int i=0;
char *tok;
tok = strtok(string, dlim);
strcpy(man[i].name, tok);
tok = strtok(NULL, dlim);
strcpy(man[i].surname,tok);
tok = strtok(NULL, dlim);
man[i].age = atoi(tok);
tok = strtok(NULL, end);
man[i].weight = atof(tok);
return man[i];
}
这个功能是什么意思?我是否正确地假设通过使用指针,该结构将自动更新在主,无需返回的东西在函数中?
函数也可以不返回任何东西(void),因为指针的使用会自动传递给main?
谢谢!
函数read必须返回一些东西。你不需要返回一个结构体的人类指针。你已经传入了一个指向要填充的结构的指针。如果失败,你最好返回0,如果成功或者返回一个非零的错误代码。这是一个典型的行为。 – bruceg