文件的打开与保存(C语言)

最近在弄文件的传输,基本流程就是:

打开文件->读取文件->传输(scoket模块)

->写入文件->保存.

现在单单看文件操作的部分,弄了我3天时间没想明白,看下面的代码。

为什么打开保存txt就可以,但是其他的文件就不行呢?

	FILE *pFile=fopen("D:\\111.doc","r");//之前的乱码系因为当j=lenFile的时候,*sendbuf='0',这样是把sendbuf的第一个字符变0,当然乱码啦.
	char *buffer;
	fseek(pFile,0,SEEK_END);
	int lenFile=ftell(pFile);
	buffer=new char[lenFile+1];
	int i=0;
	for (i=0;i<lenFile+1;i++)
	{
		buffer[i]=0;
	}
	fseek(pFile,0,SEEK_SET);//上面将文件指针设置在文件尾部.不重设是读不了数据的.或者用这句rewind(pFile);	
	fread(buffer,1,lenFile,pFile);
//	buffer[lenFile]='\0';多此一举了
	fclose(pFile);
	保存的代码///
	FILE *pFile2=fopen("D:\\133.doc","w");
	fwrite(buffer,1,lenFile,pFile2);
	fclose(pFile2);


继续看孙鑫的《VC++深入详解》,果然看书不要看一半啊,一知半解害死自己。还是不够踏实,太浮躁了!

里面有说文本方式和二进制方式读取文件的区别,系统默认的不是二进制方式读取文件,而是以文本方式打开。所以这就是为什么txt能打开而其他是乱码的原因了。

文件一般分为:二进制文件和文本文件。

文本文件:也被称为ASCII文件,它的每一个字节存放的都是可表示为一个字符的ASCII代码的文件,它是以“行”为基本结构的一种信息组织和储存方式的文件,可用任何文字处理程序阅读的简单文件。

二进制文件:是包含在ASCII及扩展ASCII字符中编写的数据和程序。一般是可执行程序,图像,声音等文件。

这里要强调的是:虽然这里将文件分类了,但实际上,他们的本质都是:文件只是在计算机内存中以二进制表示的数据再外部存储介质的另一种存放形式。对于文本文件来说,它只是一种特殊形式的文件,它所存放的每一个字节都可以转换成一个可读的字符。

所以,上面就很简单啦。

这里:        FILE *pFile=fopen("D:\\111.jpg","r");
应该改成:FILE *pFile=fopen("D:\\111.jpg","rb");
其他类似的时候的代码也作相应改动就可以了。。。


呼,困扰了2天的问题搞掂了,好开心。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值