gpt4 book ai didi

C - 数组中的结构(以及一大堆其他问题)

转载 作者:行者123 更新时间:2023-11-30 14:48:18 25 4
gpt4 key购买 nike

我是 C 语言的初学者。目前我正在学习 C 语言的文件处理,我想创建一个简单的程序,可以读取文本文件并使用 for 循环输入内容。

因为我正在学习 Pascal 背景,有时这会变得相当困惑,尤其是结构和数组的新规则和语法

这就是我的代码(缩短)的样子:

typedef struct {
char *name;
char *age;
} Person;
void write_lines_to_terminal(Person person_array[], int numberOfLines) {
for (int i = 0; i < numberOfLines; i++)
{
printf("name: %s, age: %s\n", person_array[i].name, person_array[i].age);
}
}

void read_lines_to_terminal(FILE *file_ptr) {
my_string string;
int i;
int numberOfLines;
fscanf(file_ptr, "%d", &numberOfLines);
Person person_array[numberOfLines];
for (i=0; i < numberOfLines; i++) {
fscanf(file_ptr, "%[^\n]\n", person_array[i].name);
fscanf(file_ptr, "%[^\n]\n", person_array[i].age);
}
write_lines_to_terminal(person_array, numberOfLines);
}

根据我的帕斯卡逻辑,这应该可行。但显然我遇到了一大堆围绕 -> 和 * 和 的错误。我无法理解。我尝试在这里搜索答案,但它们对我来说没有意义......

对我的代码的任何帮助或建议将不胜感激。

编辑:添加人员定义

最佳答案

fscanf() 不返回读取的值,它返回成功读取的输入数。您必须提供指向将输入存储为参数的位置的指针。

fscanf(file_ptr, "%[^\n]\n%[^\n]\n", person_array[i].name, person_array[i].age);

在开始读取数据行之前,您还需要读取行数之后的换行符。将其更改为:

fscanf(file_ptr, "%d\n", &numberOfLines);

您的 Person 结构中有指针,但您从未为它们分配任何指向的内存。相反,您应该使用数组:

typedef struct {
char name[100];
char age[4];
} Person;

我不确定为什么您使用字符串来表示年龄,而不是 int

关于C - 数组中的结构(以及一大堆其他问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50500031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com