一、图解
二、文件的操作
文件型指针变量:
FILE *fp;
fp是一个指向FILE类型结构体的指针变量。
2.1、文件的打开(fopen函数)
函数调用:
FILE *fp;
fp = fopen(文件名,使用文件方式);
注意:
对于文件使用方式有以下几点说明:
#打开文件“w”
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
if(!(fp=fopen("D:\\VC\\实验文件.txt","w"))) //注意要双“\”
{
printf("Can not open D:\\VC\\实验文件.txt\n");
system("pause");
}
else{
printf("Open success!\n");
}
}
2.2、文件的关闭(fclose函数)
函数调用:
fclose(文件指针);
函数功能:
2.2.1、字符输入fputc()
fgetc()函数调用:
fputc(ch,fg);
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
char ch, filename[20];
printf("Please input the filename you want to write:");
scanf("%s",filename);
if(!(fp=fopen(filename,"wt+")))
{
printf("Can not open ");
exit(0);
}
printf("Please input the sentences you want to write:");
//scanf会把结束符放在缓冲区,实际回车没有被消除
ch = getchar; //目的是:吸收回车
ch = getchar;
while( ch != EOF){ //EOF = ctrl + z (关闭标准)
fputc(ch,fp);
ch = getchar();
}
fclose(fp);
}
2.2.12、字符输出fgetc()
//其他代码相同
while( ch != EOF){ //EOF = ctrl + z (关闭标准)
ch = fget(fg);
putchar(ch);
}
fclose(fp);
例题:图片文件合成器
#include<stdio.h>
#include<stdlib.h>
void mian()
{
FILE *f_pic,*f_file,*f_finish;
char ch,pic_name[20],file_name[20],finish_name[20];
printf("请输入需要合成的图片和文件的名称:\n");
printf("图片:");
scanf("%s",pic_name);
printf("文件:");
scanf("%s",file_name);
printf("生成为:");
scanf("%s",finish_name);
if( !(f_pic = fopen(pic_name,"rb"))) //rb 二进制
{
printf("Cannot open the picture %s:",pic_name);
return;
}
if( !(f_file = fopen(file_name,"rb")))//解析 如果访问失败则返回0,所以!0,就是真 才能执行
{
printf("Cannot open the file %s:",pic_name);
return;
}
if( !(f_finish = fopen(finish_name,"wb")))
{
printf("Cannot open the file %s:",pic_name);
return;
}
while(!(feof(f_pic)))//测试是否是文件的结尾
{
ch = fgetc(f_pic);
fputc(ch,f_finish);
}
fclose(f_pic);
while(!(feof(f_file)))//测试是否是文件的结尾
{
ch = fgetc(f_file);
fputc(ch,f_finish);
}
fclose(f_file);
fclose(f_finish);
system("pause");
}
三、字符串读写函数:fgets()和fputs()
fgets函数:
函数调用形式:
fgets(str,n,fp);
fputs函数:
函数调用形式:
fputs("FISHC",fp);
#include<stdio.h>
#include<stdlib.h>
#define LEM 11
void main()
{
FILE *fp;
char buffer[LEN];
if(!(fp=fopen("D:\\VC\\实验文件.txt","rt")))
{
printf("\nCan not open D:\\VC\\实验文件.txt\n");
system("pause");
}
fgets(buffer,LEN.fp);
printf("%s\n",buffer);
fclose(fp);
}
四、数据块读写函数:fread()和fwrite()
函数调用形式:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
参数说明:
例题:
五、格式化读写函数:fprintf()和fscanf()
函数调用形式:
fprintf(文件指针,格式字符串,输出链表);
fscanf(文件指针,格式字符串,输入链表);
函数功能:从磁盘文件中按格式读入或输出字符。
六、顺序读写和随机读写
随机独写需要用的一个函数:fseek函数(一般用于二进制文件)
函数调用形式:
fseek(文件类型指针,位移量,起始点);
函数功能:改变文件的位置指针
起始点:
位移量:
因为是long型文件,所以位移量+L