gpt4 book ai didi

c - 我无法用 C 处理文件中的数字

转载 作者:行者123 更新时间:2023-11-30 20:21:01 25 4
gpt4 key购买 nike

当我执行此代码时,它工作正常,但“kredi.txt”中的输出显示不正确。例如,当我输入 1 表示“hesapNo”、stone 表示“soyisim”、white 表示“isim”、20.50 表示“bakiye”时,“kredi.txt”中的输出如下所示:

[   stone          white          ÌÌÌÌÌÌ     €4@]
为什么?这是我的代码:

#include<stdio.h>
#include<conio.h>

struct musteriVerisi
{
int hesapNo;
char soyisim[15];
char isim[15];
double bakiye;
};

int main() {
FILE *cfPtr;
struct musteriVerisi musteri = { 0," "," ",0.0 };
if ((cfPtr = fopen("kredi.txt", "r+")) == NULL)
printf("DosyaAcilamadi\n");
else {
printf("HesapNo girin:"
"(1 den 100 e kadar cikis icin 0 girin)");
scanf("%d", &musteri.hesapNo);
while (musteri.hesapNo != 0) {
printf("soyisim,isim,bakiye giriniz:\n?");
fscanf(stdin, "%s%s%lf", musteri.soyisim, musteri.isim, &musteri.bakiye);
fseek(cfPtr, (musteri.hesapNo - 1) * sizeof(struct musteriVerisi), SEEK_SET);
fwrite(&musteri, sizeof(struct musteriVerisi), 1, cfPtr);
printf("HesapNo girin:\n?");
scanf("%d", &musteri.hesapNo);
}
fclose(cfPtr);
}
getchar();
return 0;
}

我学习的书中包含此示例的章节的主题是“将数据写入随机访问文件”。

最佳答案

    fwrite(&musteri, sizeof(struct musteriVerisi), 1, cfPtr);

这行代码没有任何意义。您只是将内存中的一些二进制垃圾写入文件。当程序停止运行时,没有理由期望它有任何意义——谁知道系统使用什么内部格式来存储信息。

例如:

char soyisim[15];

假设包含一个以零字节结尾的两个字符串。其他 13 个字节包含什么?你知道吗?我也不。那么为什么要向文件写入未知的垃圾?!

关于c - 我无法用 C 处理文件中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091849/

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