C语言的FILE流应用

今天遇到一个关于图片文件处理的问题,需要把已经保存的图片读取大小然后根据size判断是否需要把数据做二次处理,虽然的解决方案是在数据传下来的时候就进行判断,对数据进行处理,从而确保了图片的正常显示。但是,对于其中用到的FILE流我却不是很了解。

所以,这次针对FILE流,进行简单的了解,我通过代码来说明,。

#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int main(){
   FILE *fp;
  fp = fopen("D:\\abc.txt", "w");      /*打开文件fopen(文件路径(包含文件名),操作类型);
操作类型: r:只读、w:只写、rb:以二进制打开、wb:以二进制写文件、a:续写、ab:以二进制续写
r+:可读可写的打开一个文件、w+:可读可写的创建一个文件、a+:可读可写的追加方式打开一个文件、后加b的都是以二进制形式进行操作*/
  string sFileContent("I'm abc.I want to be a better man!!");  /*这里是练习C++的string库所以头文件引用的是<string>*/
   char* cFileContent =new char[50];
  int stringLength = sFileContent.length();  //string类的求长度函数
  cout<<"stringLength:"<<stringLength<<endl;
   cout<<"sFileContent:"<<sFileContent<<endl;
   memcpy(cFileContent,sFileContent.c_str(),stringLength);  //将string类型转化成char型
   //cFileContent[stringLength] = '/0';          /*学习时,书上说c_str转化的字符串没有结束符,所以想增加结束符*/
  //cFileContent[stringLength+1] = '/0';
  cout<<"cFileContent:"<<cFileContent<<endl;
  fwrite(cFileContent,sizeof(char),stringLength+1,fp);  //将内容写进函数中
/*fwrite(写入内容,单个数据的大小,数据的数量,文件指针)*/
  fseek(fp,0,SEEK_END);              //跳转到文件尾,/*fseek(文件指针,位移量,跳转位置);用来 移动文件流的读写位置。跳转位置的值可以为SEEK_SET——从文件起始位置+位移量的位置开始读写、SEEK_CUR——从当前位置+位移量的位置开始读写文件、SEEK_END——从文件的结尾处+位移量的位置开始读写文件*/
   int fileSize = ftell(fp);  //ftell(文件指针);函数用于返回当前文件指针的位置距离文件起始位置的相对偏移量。
  cout<<fileSize<<endl;
  fclose(fp);      //关闭文件。记得有open必须有close函数,使用完不关闭可能丢失数据。
  fp = fopen("D:\\abc.txt", "r");
  if(fp == NULL){
      system("pause");
      return 0;
  }
  char buffer[50];
   memset(buffer, 0x00,sizeof(buffer));
   fread(buffer,sizeof(char),50,fp);  /*fread(接收指针,单个数据大小,数据量count,文件指针);读取文件中count个数据。*/
  cout<<buffer<<endl;
   fclose(fp);
   system("pause");
   return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值