gpt4 book ai didi

c - 使用结构化数组处理文件

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:13 25 4
gpt4 key购买 nike

我想将字符串和字符数据存储到 .dat 文件中。程序运行正常。但是在打开 .dat 文件后,相同的名称被写入了 twise。这是为什么?我找不到问题。

#include<stdio.h>

struct patients{
char name[8];
char appType[1];
};

int main(void)
{

FILE *F1;
F1 = fopen("appointment.dat","a");

int i = 0;
struct patients detailsArr[5];

for( i = 0 ; i < 5 ; i++ )
{
printf("Enter Patient Name : ");
scanf("%s",detailsArr[i].name);

printf("Enter Appointment Type :");
scanf(" %c",detailsArr[i].appType);

}

if ( F1 == NULL )
{
printf("Error in File Reading !");
return -1;
}

for( i = 0 ; i < 5 ; i++ )
{
fprintf(F1 ,"%s\t",detailsArr[i].name);
fprintf(F1 ,"%s",detailsArr[i].appType);
fprintf(F1 ,"\n");

}

fclose(F1);

return 0;
}

这是我的输出:

Dilshan CRuwan
Ruwan TMangala
Mangala SGanesh
Ganesh CJithen
Jithen SV

最佳答案

这看起来像古老的填充固定结构格式,所以这些 fprintfs 是错误的。应该是:

fprintf(F1 ,"%.8s\t",detailsArr[i].name);
fprintf(F1 ,"%.1s",detailsArr[i].appType);

我们还应该将 scanf 行更改为

scanf("%8s",detailsArr[i].name);

所以它实际上可以存储所有 8 个。

否则失败的原因是当使用最大字符串大小时,您的结构格式似乎是非空终止字符串。这需要使用 printf 和 scanf 格式字符串进行处理,并使用 strncpy 进行复制和复制。这是一种笨拙的代码,因此除了低级磁盘格式外很少使用。

关于c - 使用结构化数组处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316268/

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