首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为啥打开文件后是一个黑块

2012-08-11 
为什么打开文件后是一个黑块?C/C++ code#include stdio.h#include stdlib.hint main(){FILE * fpint

为什么打开文件后是一个黑块?

C/C++ code
#include <stdio.h>#include <stdlib.h>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数字序列的,为什么看到的却是一个黑块?

[解决办法]
文本文件只显示可显示字符 不会显示控制字符的。。。
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.
[解决办法]
可以尝试用 fprintf进行写入。
[解决办法]
1000被转化字符了,

这个字符。。。。

你改成char c='a';
试试


[解决办法]
说实话,你提的问题我也不明白,书上写的更是晕。。。。我现在还是不明白什么是二进制文件和文本文件
[解决办法]
探讨

说实话,你提的问题我也不明白,书上写的更是晕。。。。我现在还是不明白什么是二进制文件和文本文件

[解决办法]
以二进制方式写入就是二进制文件,它有个好处就是别人打开了看不懂,可以用来保存一些不能让用户看到的配置信息,比如你的产品要保存用户的密码,你可以把密码先加次密然后用二进制形式写到文件里面,鬼都不知道你那个文件是个什么东西。。
[解决办法]
推荐使用WinHex软件查看文件或内存中的原始字节内容。

不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

[解决办法]
#include <stdio.h>
#include <stdlib.h>
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;
}

热点排行