-4
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int id;
char* name;
float weight;
} Person;
int main()
{
Person *person=malloc(10*sizeof(Person));
int i=0;
char row[20];
FILE *input=fopen("input.txt","r+");
while(fscanf(input, "%s", &row)>0) i++;
i/=5;
printf("%d\n", i);
fseek(input,0,SEEK_SET);
int j;
char string[20];
for (j=0;j<i;j++){
fscanf(input,"%s",string);
fscanf(input,"ID:%d",&person[j].id);
fscanf(input,"Name:%s",person[j].name);
fscanf(input,"Weight:%f",&person[j].weight);
fscanf(input,"%s",string);
}
fclose(input);
//Person:{
//ID:1214124141
//Name:Trump
//Weight:101.50
//}
//Person:{
//ID:5235252525
//Name:Obama
//Weight:78.30
//}
return 0;
}
您好! 我想從文件讀取結構,但我的數組人即使從文件讀取後也只包含0。我的輸入文件具有註釋行中顯示的結構。無法從C中的文本文件讀取結構
我做得不好嗎? 非常感謝您的幫助!
過寬。你不檢查'scanf'的結果,格式是亂碼,混淆了代碼,'fscanf'不適合你輸入的內容。使用適當的分析器來處理這種複雜的輸入。 – Olaf
當你讀入'person [j] .name'時,指針實際指向哪裏? –
另外,在所有現代的32位和64位系統上,數據類型「int」是一個帶符號的32位整數,最多可以多加20億。對於「奧巴馬」人來說,你的「身份證」遠遠超出了32位無符號*整數所能容納的範圍。 –