作者:清晨竹林9_877 | 来源:互联网 | 2023-01-30 08:05
#include
#include
int main()
{
FILE * fp;
int i = 10000;
if((fp = fopen("ccc.txt","w")) == NULL)
{
printf("cannot open file\n");
exit(0);
}
fputc(i,fp);
fclose(fp);
return 0;
}
"w"是以文本文件方式打开的话,我本以为打开ccc.txt文件后会看到:00110001等一串01数字序列的,为什么看到的却是一个黑块?
12 个解决方案
文本文件只显示可显示字符 不会显示控制字符的。。。
10000 被截断了。。 写进去的不是10000 而是16
显示的也是16的assic码。。。
ASSIC码 16.。 貌似神马都不是。。。。
你可以把数字换一下 10032 说不定文本文件里边会出现你认识的字符~
楼上正解。
'r' 只读方式打开,将文件指针指向文件头,如果文件不存在,则File返回空。
'r+' 读写方式打开,将文件指针指向文件头,如果文件不存在,则File返回空。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE。
'b' 使用字符b作为文件类型的判断,是否是binary文件
fputc() writes the character c, cast to an unsigned char, to stream.
1000被转化字符了,
这个字符。。。。
你改成char c='a';
试试
说实话,你提的问题我也不明白,书上写的更是晕。。。。我现在还是不明白什么是二进制文件和文本文件
以二进制方式写入就是二进制文件,它有个好处就是别人打开了看不懂,可以用来保存一些不能让用户看到的配置信息,比如你的产品要保存用户的密码,你可以把密码先加次密然后用二进制形式写到文件里面,鬼都不知道你那个文件是个什么东西。。
推荐使用WinHex软件查看文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
#include
#include
int main()
{
FILE * fp;
int i = 10000;
if((fp = fopen("D:\\ccc.txt","w")) == NULL)
{
printf("cannot open file\n");
exit(0);
}
fprintf(fp,"%d",i);
fclose(fp);
return 0;
}