gpt4 book ai didi

c - 结构程序未按预期工作(错误)

转载 作者:行者123 更新时间:2023-12-05 06:52:24 25 4
gpt4 key购买 nike

我一直在努力从文件中读取数据,该文件包含格式为学生姓名和年龄的数据:

约翰

12

13

Julia

18

这是我写的程序:

  #include <stdio.h>
#include <stdlib.h>
struct record{
char name[50];
int age;
};
int main(){
FILE *fp;
fp=fopen("sample2.txt","r");
struct record a[50];
int counter=1;
int i=0;
while (!EOF){
if (counter%2!=0){
fgets(a[i].name,50,fp);
counter++;
}
if (counter%2==0){
a[i].age=getw(fp);
counter++;
i++;
}
}
return 0;
}

但是,在打印 a[0].name 时,我没有得到预期的输出。有人可以帮忙吗?

最佳答案

正如评论中已经指出的那样,EOF 是一个在 stdio.h 中定义的值,并且没有说明任何关于您的文件描述符的信息。我还建议您使用 fscanf(只要您确定文件中的名称的长度都是正确的)。 fscanf 采用类似于 printf 的字符串,指定您期望的元素并返回可能的匹配项数。它还可以帮助您将数据转换为正确的数据类型。所以代码可能看起来像这样:

#include <stdio.h>
#include <stdlib.h>
struct record
{
char name[50];
int age;
};

int main ()
{
FILE *fp;
fp = fopen ("sample2.txt", "r");
struct record a[50];
int i = 0;
while (fscanf(fp, "%s\n%d\n", (char *) a[i].name, &a[i].age) > 0) {
i++;
}
printf("%s %d\n", a[1].name, a[1].age);
return 0;
}

关于c - 结构程序未按预期工作(错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65970898/

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