在这个练习中如何从文件中读取数据?
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) 使用
- 读取一个字符,检查它是否不是空格,如果是,则存储在结构的数组名称中。 (如果是真的,那就意味着我在数组中有完整的人名)。
- 读一遍又一遍,直到遇到空白为止。然后跳过空格。
- 读取年龄,并将其存储在结构(无符号整数年龄)中。
但我认为我把工作复杂化了。有没有更简单的方法?
规范解是:
int r = fscanf(f, "%255s %u\n", p->name, &p->age);
其中 p
你的人物指针。在这种情况下,您想检查 r
是否为 2
,以便您拥有两个字段的有效数据。
我要做这个练习:
简短说明:
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) 使用
- 读取一个字符,检查它是否不是空格,如果是,则存储在结构的数组名称中。 (如果是真的,那就意味着我在数组中有完整的人名)。
- 读一遍又一遍,直到遇到空白为止。然后跳过空格。
- 读取年龄,并将其存储在结构(无符号整数年龄)中。
但我认为我把工作复杂化了。有没有更简单的方法?
规范解是:
int r = fscanf(f, "%255s %u\n", p->name, &p->age);
其中 p
你的人物指针。在这种情况下,您想检查 r
是否为 2
,以便您拥有两个字段的有效数据。