栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-10-25 文件读写C语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-25 文件读写C语言

**

读文件

**
1、使用FILE* file定义FILE结构体指针
2、fopen()打开文件
3、if(file==NULL)判断文件是否打开成功
4、if(file!=NULL)则文件打开成功,打开成功后使用feof(file)判断是否读完文件,函数返回0时未读完,返回1读完。
5、使用fseek(file,FileLength,SEEK_SET)设置文件读指针偏移。

int fseek(FILE *stream, long offset, int fromwhere);

6、使用fread(&buffer,1,144,file)读取文件。

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存
块的指针。
size -- 这是要读取的每个元素的大小,以字节为单位。
nmemb -- 这是元素的个数,每个元素的大小为 size 字
节。
stream -- 这是指向 FILE 对象的指针,该 FILE 对象
指定了一个输入流。
FILE *file;
Cstring tmpstr;
//m_sFileName是Cstring,从m_CFileDialog中获得文件读取路径。
fopen_s(&file,m_sFileName,_T("rb"));
	if(file==NULL)
	{
		tempstr.Format(_T(">>文件打开失败!"));
		ShowData(tempstr,RGB(255,0,0));	
		fclose(file);
	}//if(file==NULL)
	else
	{
		tempstr.Format(_T(">>文件%s打开成功!"),m_sFileName);
		ShowData(tempstr,RGB(0,128,0));

	
		while(!feof(file) && FileLength < 144 * 180) //
		{
			fseek(file,FileLength,SEEK_SET);
			fread(&buffer,1,144,file);//buffer中轮流存入整帧数据,1代表一个字节
			FileLength += 144; 
			j=0;
			if (buffer[j] == 0x24 && buffer[j + 1] == 0x40)

这样就可以开始处理buffer中的数据

数据处理完后写入文件。

写文件

CStdioFile FileOrbit;
		fileName.Format(_T("%04d%02d%02d.txt"), lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday);
		
		FileOrbit.Open(fileName, CFile::modeCreate | CFile::modeWrite);
		FileOrbit.Seek(0, CFile::end);
		tempstr.Format(_T(">ORBIT %04d %02d %02d %02d %02d %.1fn"),lt->tm_year+1900,lt->tm_mon+1,lt->tm_mday,lt->tm_hour,lt->tm_min,lt->tm_sec);
		FileOrbit.WriteString(tempstr);

OR

fwrite(&buffer,1,);

应为fwrite是以二进制的形式对文件进行操作.
1.fwrite()写入文件的如果是能够表示为字符,那么就会显示为字符;
如果显示不出来,那就写的是二进制内容(打开就是所谓的乱码)
2.fprintf()写的是数字转换成ASCII码之后的字符

fprintf(FILE * stream, const char * format, 输出表列);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号