如何将文件逐行读入struct?

问题描述 投票:0回答:1

我有一个file.txt,其中包含:

Marco Beno
Polo
15
Mario
Pollo Pollo
20

和结构定义为:

struct person{
char name[15];
char surname[15];
int age;
}

现在我要逐行将此文件读入此[[struct,因此将marco beno分配给person.namePoloperson.surname,依此类推...我一直在寻找解决方案,但找不到相关示例。问题是space跳过了对下一个变量的读取,因此Marco是名称,Beno是姓。但是它看起来应该像这样:person.name == Marco Beno

c data-structures filereader readfile
1个回答
0
投票
而不是逐行读取文件,您可以使用fscanf一次读取三行(=一个数据记录):

while (fscanf(filename, "%[^\n]\n%[^\n]\n%i\n", person1.name, person1.surname, &person1.age) == 3) { printf("Retrieved data record: name = '%s', surname = '%s', age = %i\n", person1.name, person1.surname, person1.age); }

格式说明符%[^\n]\n将读取除换行符以外的所有字符(即包括空格的整行),然后读取换行符本身。每个数据记录(名称和姓氏)都会发生两次,最后读取一个整数和第三个换行符。 

请注意,这只是一个简单的示例来说明这个想法,并且person1结构每次都会被覆盖。如果需要将整个文件存储在内存中,则当然必须分别存储每个数据记录(例如,存储在person数组中)。

© www.soinside.com 2019 - 2024. All rights reserved.