-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位无符号*整数所能容纳的范围。 –