C语⾔⽂件操作--⽂本⽂件详解(附代码)
C语⾔⽂件操作
前⾔
什么是⽂本⽂件
我们在刚刚接触c语⾔时就了解了ASCII标,每个特定的数代表⼀个字符,那么将字符形式的⽂件就是ASCII⽂件,也称为⽂本⽂件,每个字节存放⼀个字符的ASCII值。
1. 打开⽂本⽂件
注意:应提前建⽴⼀个.text⽂本⽂件,放到与.c⽂件同⼀个⽂件夹中
fopen 打开⽂件函数 (成功打开后指向该流的⽂件指针就会被返回,失败返回NULL)
fclose 关闭⽂件函数
打开⽂件⽅式:
代码⽰例:
char ch;
FILE *fp; //声明⽂件指针
fp=fopen("a.txt","r"); //以只读⽅式打开⽂本⽂件
if(fp==NULL)
{
printf("Fail to open the file!");
exit(0);
}
else
{
printf("The file is open!\n");
}
fclose(fp); //关闭⽂件
return 0;
}
2. 判断是否读取到⽂件末尾
1. feof()函数检查⽂件是否读取完毕,没到最尾部返回0,到最尾部返回⾮零值。
2. fgetc()可从⽂件数据流中⼀次读取⼀个字符,然后读取光标移动到下⼀个字符,并逐步将⽂件的内容读出。如果字符读取成功,则返
回所读取的字符,否则返回EOF(end of file)。
代码块1:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
FILE *fp; //声明⽂件
fp=fopen("a.txt","r"); //以只读⽅式打开⽂件
if(fp==NULL)
{
printf("Fail to open the file!");
exit(0);
}
while(!feof(fp)) //判断是否到⽂件结尾
{
ch=fgetc(fp); //依次读取⽂本中⼀个个字符
printf("%c",ch);//可在显⽰屏上依次打印⽂件中字符
}
fclose(fp);
return 0;
}
代码块2:
char ch;
FILE *fp; //声明⽂件
fp=fopen("a.txt", " r " ); //打开⽂件
if(fp==NULL)
{
printf("Fail to open the file!");
exit(0);
}
while( ( ch=fgetc(fp) ) != EOF ) //判断是否到⽂件结尾
{
printf("%c",ch);//可在显⽰屏上依次打印⽂件中字符
}
fclose(fp); //关闭⽂件
return 0;
}
⼩结:代码1与代码2相⽐代码2看起来更简洁,未使⽤feof()函数
3. 顺序读写数据⽂件
3.1读写字符函数
函数调⽤⽅式
fgetc()fegrtc(⽂件指针)
fputc()fputc(ch,fp)
//把字符变量ch写到fp所指向的⽂件中去
代码⽰例:
#include <stdio.h>
int main()
{
FILE*fp; //设置⼀个⽂件指针
char ch; //定义⼀个待⽤字符变量
if((fp=fopen("","w"))==NULL) //以只写⽅式打开⽂件
{
printf("ERROR");
exit(0); //关闭所有⽂件,终⽌正在执⾏的程序
}
scanf("%c",&ch);
while(ch!="\n")
{
fputc(ch,fp); //将字符ch写⼊fp所指向的⽂件
scanf("%c",&ch);
}
fclose(fp); //关闭⽂件
}
值得注意的是当输⼊字符后,⽂本中原先内容被清空
如何在原先内容上续写呢?
if((fp=fopen("","a"))==NULL) // 只需将w改为a即可
如此就能解决问题。
因此,对⽂件进⾏操作时,⼀定要选择适宜的⽂件打开⽅式
3.2字符串
函数调⽤⽅式功能返回值fgets()fgets(str,n,fp)从fp指向的⽂件读⼊⼀个长度为n-1的字符串,存放到字符数组str中去成功返回地址str,失败返回NULL fputs()fputs(str,fp))把str所指向的字符串写⼊fp所指向的⽂件中成功返回0,失败返回⾮零
运⽤fgets()函数代码块:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[10];//定义⼀个字符数组⽤于储存⽂本⽂件中字符串
FILE *fp; //声明⽂件
fp=fopen("a.txt","r"); //以只读⽅式打开⽂件
if(fp==NULL)
{
printf("Fail to open the file!");
exit(0);
}
else
{
printf("The file is open!\nPlease proceed to the next step\n");
}
fgets(str,5,fp); //从⽂件中取出4个字符
puts(str); //将⽂件内容打印到显⽰屏上
fclose(fp);
return 0;
}
运⽤fputs()函数代码块:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[10];
FILE *fp; //声明⽂件
fp=fopen("a.txt","a"); //以追加⽅式打开⽂件
if(fp==NULL)
{
printf("Fail to open the file!");
exit(0);
}
else
{
printf("The file is open!\nPlease proceed to the next step\n");
}
printf("please input content:\n");
gets(str);
fputs(str,fp);
fclose(fp);
return 0;
}
⼩结:相⽐之前的读取,fgets()函数不够灵活,受到⼀开始“n”的限制;⽽录⼊,fputs()函数更简洁,容易记忆。
4. ⽤格式化的⽅式读写⽂本⽂件
引⼦:在以前的输出输⼊之中,常⽤scanf和printf函数,格式化读写函数和他们类似,⽽不同点就是,scan()f函数接收的是来⾃键盘的信息,fscanf()函数接收的是⽂件中的内容;printf()函数是将内容打印在显⽰屏上,fprintf()函数是将内容打印到⽂件中。
函数调⽤⽅式
fscanf()fscanf(⽂件指针,格式字符串,输⼊列表)
fprintf()fprintf(⽂件指针,格式字符串,输出列表)
实例讲解:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char str1[20],str2[20];
FILE*fp;
if((fp=fopen("","r+"))==NULL) //以读写的⽅式打开test
fgets和fgetc的区别{
printf("ERROR");
exit(0);
}
printf("在显⽰屏上打印⽂件中的内容:\n");
fscanf(fp,"%s",str1);
puts(str1);//向显⽰屏打印从⽂件接受的字符串
printf("\n请输⼊要写到⽂件的内容:\n");
gets(str2); //输⼊
fprintf(fp,"%s",str2);
fclose(fp); //关闭⽂件
}
⼩结:由代码实例讲解可知,fprintf()函数和fputs()函数效果⼀样;
⽽fscanf()函数被输⼊列表str定义时【】中的数值所限制。
总结·:由以上众多代码⽰例可以发现,fgetc()函数和fprintf()函数,fputs()函数结合使⽤能够完成⼤多数任务。
以上是⼩编将⾃⼰对⽂件操作中的对⽂本⽂件操作的理解,分析,看法融⼊其中,如有发现问题,请在评论区留下你宝贵的意见。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论