**
读文件
**
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, 输出表列);



