/*C语言使用文件的例子*/
#include <stdio.h>
/*文件的访问可以使用二进制的形式访问,也
可以使用文本方式访问,在C中,是依靠打开
文件时的参数来确定的,以二进制方式访问
的文件在以记事本等方式打开时看到的可能
是乱码,具体的操作如下:*/
/*功能:以文本方式生成一个文件,将"50 100 150"等数字输出到文件中
输入:无
输出:无
返回:无
*/
void write_TXT_file(void)
{
/*定义想输出的文件名*/
const char * pFileName="c:\\aa.txt";
/*定义输出到文件的数据*/
int num1=50,num2=100,num3=150;
/*定义文件指针*/
FILE * pFile;
/*以文本方式打开文件用于输出*/
pFile=fopen(pFileName,"wt");
/
*判断打开文件成功否*/
if ( NULL == pFile )
{
perror("打开文件失败");
return;
}
/*以文本方式输出到文件*/
fprintf(pFile,"%d\n%d %d",num1,num2,num3);
/*检验写文件是否成功*/
if ( ferror(pFile) )
{
perror("写文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
printf("文本文件成功写入\n");
/*不要忘记关闭文件*/
fclose(pFile);
return;
}
/*功能:从文本文件中将数据读出来
输入:无
输出:无
返回:无
*/
void read_TXT_file(void)
{
/*定义想读取的文件名*/
const char * pFileName="c:\\aa.txt";
/*定义变量接收数据*/
int num1,num2,num3;
/*定义文件指针*/
FILE * pFile;
/*以文本方式打开文件用于输入*/
pFile=fopen(pFileName,"rt");
/*判断打开文件成功否*/
if ( NULL == pFile )
{
perror("打开文件失败");
return;
}
/*以文本方式读取文件*/
fscanf(pFile,"%d%d%d",&num1,&num2,&num3);
/
*检验写文件是否成功*/
if ( ferror(pFile) )
{
perror("读文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
printf("文本方式读取到的数据为:[%d][%d][%d]\n",num1,num2,num3);
/*不要忘记关闭文件*/
fclose(pFile);
return;
}
/*功能:以二进制方式生成一个文件,将"50 100 150"等数字输出到文件中
输入:无
输出:无
返回:无
*/
void write_BIN_file(void)
{
/*定义想输出的文件名*/
const char * pFileName="c:\\aa.bin";
/
*定义输出到文件的数据*/
int num1=50,num2=100,num3=150;
/*定义文件指针*/
FILE * pFile;
/*以二进制方式打开文件用于输出*/
pFile=fopen(pFileName,"wb");
/*判断打开文件成功否*/
if ( NULL == pFile )
{
perror("打开文件失败");
return;
}
/*以二进制方式输出到文件*/
/*fwrite函数可以自己查一下用法*/
fwrite(&num1,sizeof(num1),1,pFile);
/*检验写文件是否成功(ferror函数只能检查最近的一次文件操作是否成功,所以每次写入都需要判断一次)*/
if ( ferror(pFile) )
{
perror("写文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
fw
rite(&num2,sizeof(num2),1,pFile);
/*检验写文件是否成功*/
if ( ferror(pFile) )
{
perror("写文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
fwrite(&num3,sizeof(num3),1,pFile);
/*检验写文件是否成功*/
if ( ferror(pFile) )
{
perror("写文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
printf("二进制文件成功写入\n");
/*不要忘记关闭文件*/
fclose(pFile);
return;
}
/*功能:从二进制文件中将数据读出来
输入:无
输出:无
返回:无
*/
void read_BIN_file(void)
{
/*定义想读取的文件名*/
const char * pFileName="c:\\aa.bin";
/*定义变量接收数据*/
int num1,num2,num3;
/*定义文件指针*/
FILE * pFile;
/*以二进制方式打开文件用于输入*/
pFile=fopen(pFileName,"rb");
/*判断打开文件成功否*/
if ( NULL == pFile )
{
perror("打开文件失败");
return;
}
/*以二进制方式读取文件*/
fread(&num1,sizeof(num1),1,pFile);
/*检验读文件是否成功*/
if ( ferror(pFile) )
{
perror("读文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
/*以二进制方式读取文件*/
fread(&num2,sizeof(num2),1,pFile);
/*检验读文件是否成功*/
if ( ferror(pFile) )
{
perror("读文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
/
*以二进制方式读取文件*/
fread(&num3,sizeof(num3),1,pFile);
/*检验读文件是否成功*/
if ( ferror(pFile) )
{
perror("读文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
printf("二进制方式读取到的数据为:[%d][%d][%d]\n",num1,num2,num3);
/
*不要忘记关闭文件*/
fclose(pFile);
return;
}
/*功能:以二进制方式从二进制文件中只将第三个整数读出来
输入:无
输出:无
返回:无
*/
void read_BIN_file_3DNUM(void)
{
/
*定义想读取的文件名*/
const char * pFileName="c:\\aa.bin";
/*定义变量接收数据*/
int num;
/*定义文件指针*/
FILE * pFile;
/*以二进制方式打开文件用于输入*/
pFile=fopen(pFileName,"rb");
/*判断打开文件成功否*/
if ( NULL == pFile )
{
perror("打开文件失败");
return;
}
/*移动文件的读取指针将其指向第三个整数的位置*/
/*有关fseek函数请自己去查阅其参数信息*/
fseek(pFile,2*sizeof(int),0);
/*以二进制方式读取文件*/
fread(&num,sizeof(num),1,pFile);
/*检验读文件是否成功*/
if ( ferror(pFile) )
{
perror("读文件失败");
/*关闭文件后返回*/
fclose(pFile);
return;
}
printf("二进制方式读取文件中第三个整数得到的数据为:[%d]\n",num);
/*不要忘记关闭文件*/
fclose(pFile);
return;
}
int main(void)
{
/*调用写文本文件*/
write_TXT_file();
/*调用读文本文件*/
read_TXT_file();
/*调用写二进
fopen函数失败
制文件*/
write_BIN_file();
/*调用二进制方式读文件*/
read_BIN_file();
/*调用二进制方式读文件,仅读取文件中第三个整数*/
read_BIN_file_3DNUM();
/*暂停程序以便看清结果*/
printf("Press any key ");
fflush(stdin);
getchar();
return 0;
}