文件操作
文件:一般是指存储在外部介质上数据的集合,程序设计中主要用到的是程序文件和数据文件,数据文件可分为ASCLL文件和二进制文件,ASCLL文件又称为文本文件
数据在内存中是以二进制形式进行存储的
文件标识包括:1.文件路径,2.文件名主干,3.文件后缀三部分,文件标识常被称为文件名
缓冲文件系统:从内存向磁盘输出数据必先送到内存中的缓冲区,等缓冲区装满后再一起送到磁盘,如果从磁盘向计算机读入数据则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个的将数据送到程序数据区。
fopen("文件名","使用文件方式")
fclose("文件指针")
往文本文件中写入字符
fputc函数
格式 fputc(文件名,使用文件方式)
例:
int main(int argc, char *argv[]) {
FILE *p;//文件指针
char ch;
if((p = fopen("E:\\test.txt.txt","w")) == NULL) //文本文件的文件名若有后缀名为 .txt 时就要写成 fopen("E:\\test.txt.txt","w"),若文件名没有后缀时就写一个 .txt
{
printf("cannot open file\n");
exit(0);
}
ch = getchar();
while(ch != '#')//遇到 ‘#’ 就停止
{
fputc(ch,p);//往文本文件中写入字符
ch = getchar();
}
fclose(p);
return 0;
}
运行结果
从文件中读取字符
fgetc函数
格式 fgetc(文件指针)
例:
int main(int argc, char *argv[]) {
FILE *p;
char ch;
p = fopen("E:\\hello.txt","r");
ch = fgetc(p);
while(ch != EOF)
{
putchar(ch);
ch = fgetc(p);
}
fclose(p);
return 0;
}
运行结果
往文本文件中输入字符串
fputs函数
格式 fputs(字符串,文件指针)
例:
int main(int argc, char *argv[]) {
FILE *p;
char ch[20];
if((p = fopen("E:\\test.txt","w")) == NULL)
{
printf("cannot open file\n");
exit(0);
}
gets(ch);
fputs(ch,p);
fclose(p);
return 0;
}
运行结果
或
int main(int argc, char *argv[]) {
FILE *p;
char ch[20];
char filename[20];
scanf("%s\n",&filename);
if((p = fopen(filename,"w")) == NULL)
{
printf("cannot open file\n");
exit(0);
}
gets(ch);
fputs(ch,p);
fclose(p);
return 0;
}
运行结果
从文本文件中输出字符串
fgets函数
格式 fgets(字符数组名,n ,文件指针) // n指的是从字符串中的到的字符的个数包含‘\0’
例:
int main(int argc, char *argv[]) {
FILE *p;
char ch[20];
char filename[20];
scanf("%s",filename);
if((p = fopen(filename,"r")) == NULL)
{
printf("cannot open file");
exit(0);
}
fgets(ch,sizeof(ch),p);
printf("%s",ch);
fclose();
return 0;
}
运行结果
fprintf函数 作用:将整型变量的值以%c的格式输出到文件指针所指的文件中
int main(int argc, char *argv[]) {
FILE *p;
int i = 88; //定义整型变量,也可以定义字符型
char filename[50];
printf("please enter filename:");
scanf("%s",filename);
if((p = fopen(filename,"w")) == NULL)
{
printf("cannot open file");
exit(0);
}
fprintf(p,"%c",i);//将 i 以字符形式写入到p所指的文件中 ,%d则是将 i 以整型形式写入到文件中
fclose(p);
return 0;
}
运行结果
fscanf函数 作用:读入文件指针所指向的变量的值
格式 fscanf(文件指针,字符串格式,变量)
例:
int main(int argc, char *argv[]) {
FILE *p;
int a;
int i;
char filename[50];
printf("please enter filename:");
scanf("%s",filename);
if((p = fopen(filename,"r")) == NULL)
{
printf("cannot open file");
exit(0);
}
for(i = 0;i<5;i++)
{
fscanf(p,"%c",&a);//文件中的值是字符型的就用%c,文件中的是整型的就用%d,
printf("%5c\n",a);//以字符的形式输出,若是%d则是以整型的形式输出
}
fclose(p);
return 0;
}
运行结果
原文件中的值
将一个文件中的内容复制到另一个文件中
FILE *infile,*outfile;
char ch;
infile = fopen("D:\\test.txt","r");
outfile = fopen("D:\\uav.txt","w");
if(infile == NULL)
{
printf("cannot open file");
exit(0);
}
if(outfile == NULL)
{
printf("cannot open file");
exit(0);
}
while(!feof(infile)) //未遇到结束标志符
{
ch = fgetc(infile);//从文件中读入字符到变量ch
fputc(ch,outfile);//将读入的字符输出到文件
putchar(ch);//在屏幕上显示读入的字符
}
fclose(infile);
fclose(outfile);