gpt4 book ai didi

c - 如何在C编程中从行中具有不同字数的结构中的文本文件读取数据?

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

我正在尝试从文本文件中读取结构中的数据,我想将其打印为与原始文件相同。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct _Member{
char *name;
int age;
int id;
char *town;
}Member;

int main() {

FILE *file = fopen("member.txt", "r");
FILE *newFile = fopen("new_member.txt", "w");

int counter=0, line = 10;

Member *member = malloc(sizeof(Member)*line);

for(int i =0; i<line; i++){
int len = 12;
char *name = malloc(sizeof(char)*(len+1));
name [len] = '\0';
int age;
int id;
char *town = malloc(sizeof(char)*(len+1));
town [len] = '\0';

fscanf(file, "%s %i %i %s\n", name, &age, &id, town);

member[counter].name = name;
member[counter].age =age;
member[counter].id = id;
member[counter].town = town;

counter++;
}

for(int i = 0; i < counter-1; i++){

fprintf(newFile, "%s %d %d %s\n", member[i].name, member[i].age, member[i].id, member[i].town);
}

fclose(file);
fclose(newFile);

printf("Successful\n");

return 0;
}

成员(member).txt

John 23 3456 Edinburgh
Robert 33 4567 London
Peter 45 4345
Cary 56 12345
Dian 45 4587 Norfolk
Will 32 3453 Essex
Paul 56 7896 York
Alisha 78 1234 Peterbourgh
Brandon 45 3214 Brighton
Eli 39 5234 Oxford

我正在得到结果。new_member.txt

John 23 3456 Edinburgh
Robert 33 4567 London
Peter 45 4345 Cary
56 12345 4345
Dian 45 4587 Norfolk
Will 32 3453 Essex
Paul 56 7896 York
Alisha 78 1234 Peterbourgh
Brandon 45 3214 Brighton

如何打印与原始文件相同的内容?请注意;我正在尝试读取 STRUCT 中的数据。我的结构正在读取第三行,并将第四行的名称作为城镇。任何帮助将不胜感激。谢谢

最佳答案

您尚未为少数情况定义城镇名称,例如

Peter 45 4345 
Cary 56 12345

但是当您尝试通过 fscanf 读取它时,编译器期望存在城镇名称;

fscanf(file, "%s %i %i %s\n", name, &age, &id, town);

该数据将从下一行获取,依此类推。

如果是这种情况,那么您可以使用fgetssscanf来代替。

希望这有帮助。

关于c - 如何在C编程中从行中具有不同字数的结构中的文本文件读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36044255/

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