gpt4 book ai didi

c - 在c中将int保存到二进制文件

转载 作者:行者123 更新时间:2023-11-30 17:00:19 24 4
gpt4 key购买 nike

我正在为我的编程课制作一个简单的游戏。我在将播放保存到二进制文件时遇到问题,它只写入坐标的字母。

int 数字只是 6 到 8 中的一个数字。char 字母只是从 A 到 J 的一个字母。

我希望坐标像 A1 一样出现在文件中...

有人知道怎么解决吗?

这是函数:

void makeLoad(FILE *f,char letter, int number){
f = fopen("save.dat", "a+");
if( f==NULL ) {
printf("Erro no acesso ao ficheiro\n");
return ; }
printf("%c\n", letter );//debug purposes
printf("%d\n", number );//debug purposes

fwrite(&letter,sizeof(letter),1,f);
fwrite(&number,sizeof(number),1,f);

fclose(f);
}

我期待最后会有一系列像 A1B3C5 这样的戏剧但我只得到 ABC ...之间缺少数字

如果需要,这里是完整文件:http://pastebin.com/WzynZuaC

最佳答案

只要号码只有一位数字,您就可以快速解决此问题:

char c = '0' + number;
fwrite(&c,sizeof(c),1,f);

您所做的是将 int 的二进制表示形式写入文件中,这与 ASCII 表示形式不同。例如,字符“6”的二进制表示形式是 00110110,而 int 6 的二进制表示形式是 00000000000000000000000000000110。当您想要写入前者时,您正在将后者写入文件中。将“0”添加到数字中会添加 00110000,这会在隐式转换为字符后给出正确的二进制值。

修复代码的更简洁方法是用单个 fprintf 调用替换 fwrite 调用,它会为您完成所有工作:

fprintf(f, "%c%d", letter, number);

关于c - 在c中将int保存到二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37687515/

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