VS2010c++, 我用readfile读不出原来写入的内容了,求助啊!

2024-12-19 00:50:33
推荐回答(1个)
回答1:

对于fopen("c:\\1.txt", "w");方式打开的文件,默认的是.txt文件,即存储的是ASCII码,而fwrite(&a, sizeof(a), 1, fp);写入的是数值,显然打开与写入是不和谐的。我个人的建议是,对于.txt文件,应该用fprintf()函数写入,用fscanf()函数读出,这样才能够配套,而对于.bin文件,写入用fwrite(),读出用fread(),这样才能保证写入与读出数据的一致性。

现在回到你的问题上来,因为是用fwrite(&a, sizeof(a), 1, fp);写入的,磁盘文件存储的是连续4个字节(也可能是2个字节,与C的具体实现有关),也就是二进制表示的数,与计算机内存中的表示方法相同,读出时,用的是fread(&b, sizeof(b), 1, fp);,那么如何解读b的内容,完全由你来决定,比如,可以当作4个字符,也可以当作一个整数。那么就你的要求来说,你需要的是数值,因为存储方式是二进制的,即0X1B = (00000000000000000000000000011011)2,也就是十进制的27,对应于键盘上的键值,输出格式用"%d"或"%u"或"%i"等,得到的是27,用"%X"的到的是1B,也就是说对于具体内容,得到的结果与输出格式有关。