gpt4 book ai didi

c - 从文件中读取文本但显示不正确

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

我正在使用 C 从文件中读取文本并将其存储在结构数组中。但是当我使用 printf 打印它之后,它的输出不是我所期望的。

我的代码:

#include<stdio.h>
struct userINFO {
char id[6];
char name[20];
char lastName[20];
};
int main()
{
FILE *fdata;
struct userINFO allUser[3];
int i=0;
fdata = fopen("textdata.txt","r");

if (fdata == NULL)
{
printf("ERROR!");
return 0;
}

while (fscanf(fdata,"%s %s %s", allUser[i].id, allUser[i].name, allUser[i].lastName)!=EOF)
{
i++;
}

for (i = 0; i < 3 ; i++)
{
printf("ID: %s\n", allUser[i].id);
printf("Name: %s\n", allUser[i].name);
printf("LastName: %s\n", allUser[i].lastName);
}
fclose(fdata);

return 0;
}

文本文件:

001001
Firstname1
LastName1
601002
Firstname2
LastName2
601003
Firstname3
LastName3

输出

ID: 001001Firstname1
Name: Firstname1
LastName: LastName1
ID: 601002Firstname2
Name: Firstname2
LastName: LastName2
ID: 601003Firstname3
Name: Firstname3
LastName: LastName3

它应该是什么:

ID: 001001
Name: Firstname1
LastName: LastName1
ID: 601002
Name: Firstname2
LastName: LastName2
ID: 601003
Name: Firstname3
LastName: LastName3

我尝试了很多事情,例如更改 fscanf -> fgets、在 printf 中添加 %6s、更改文本格式等。但其输出仍然相同。我应该在代码中更改哪些内容才能使其正确显示?

最佳答案

在结构中,您使用长度为 6 的字符串,但需要考虑“\0”字符。所以将id长度设置为7就可以解决你的问题

#include<stdio.h>
struct userINFO {
char id[7];
char name[20];
char lastName[20];
};
int main()
{
FILE *fdata;
struct userINFO allUser[3];
int i=0;
fdata = fopen("textdata.txt","r");

if (fdata == NULL)
{
printf("ERROR!");
return 0;
}

while (fscanf(fdata,"%s %s %s", allUser[i].id, allUser[i].name, allUser[i].lastName)!=EOF)
{
i++;
}

for (i = 0; i < 3 ; i++)
{
printf("ID: %s\n", allUser[i].id);
printf("Name: %s\n", allUser[i].name);
printf("LastName: %s\n", allUser[i].lastName);
}
fclose(fdata);

return 0;
}

关于c - 从文件中读取文本但显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47001009/

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