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];
}
機能はどのように見えるのですか?そして、私はポインタの使用を通じて構造体が自動的にmainで更新されると仮定して正しいですか?関数に何かを返す必要はありませんか?
ポインターの使用が自動的にメインに渡されるため、この関数は何も返しません(無効)?
ありがとうございました!
関数の読み込みに何かが返されています。構造体の人間のポインタを返す必要はありません。あなたはすでに記入される構造体へのポインタを渡しています。成功した場合は0を返し、失敗の場合はゼロ以外のエラーコードを返します。これは典型的な動作です。 – bruceg