在这个练习中如何从文件中读取数据?

how to read data from a file in this exercise?

我要做这个练习:

简短说明:

read a file, and store informations in a struct pointed to by a pointer.

详细解释:

I have a struct "person", and it contains: char name[256]; unsigned int age.

struct person {
    char name[256];
    unsigned int age;
};

I have to implement this function:

void person_read (FILE *f, struct person *pp);

I have to read informations with this formatting style:

<person's name> <whitespace> <age> 
<person's name> <whitespace> <age> 
<person's name> <whitespace> <age> 
<person's name> <whitespace> <age> 

并将每个数据存储在该指针指向的结构中。

问题是我不知道如何读取人名、跳过空格然后读取年龄。如何设置这样的阅读功能:1) 阅读人名,2) 跳过空格,3) 阅读年龄?

fgetc() 函数不是解决方案,因为它只读取 1 个字符,而人名没有 1 个单个字符。另一方面,fscanf() 函数读取所有内容。

我的想法是使用 1) 读取,2) 检查,3) 使用

  1. 读取一个字符,检查它是否不是空格,如果是,则存储在结构的数组名称中。 (如果是真的,那就意味着我在数组中有完整的人名)。
  2. 读一遍又一遍,直到遇到空白为止。然后跳过空格。
  3. 读取年龄,并将其存储在结构(无符号整数年龄)中。

但我认为我把工作复杂化了。有没有更简单的方法?

规范解是:

int r = fscanf(f, "%255s %u\n", p->name, &p->age);

其中 p 你的人物指针。在这种情况下,您想检查 r 是否为 2,以便您拥有两个字段的有效数据。