C语言文件操作--文本文件详解(附代码)

C语言文件操作

前言

什么是文本文件???
我们在刚刚接触c语言时就了解了ASCII标,每个特定的数代表一个字符,那么将字符形式的文件就是ASCII文件,也称为文本文件,每个字节存放一个字符的ASCII值。

1. 打开文本文件

注意:应提前建立一个.text文本文件,放到与.c文件同一个文件夹中
fopen 打开文件函数 (成功打开后指向该流的文件指针就会被返回,失败返回NULL)
fclose 关闭文件函数
打开文件方式:
C语言文件操作--文本文件详解(附代码)_第1张图片
代码示例:

#include 
#include 

int main()
{
    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 
#include 

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:

#include 
#include 

int main()
{
    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 
int main()
{
     FILE*fp; //设置一个文件指针
     char ch; //定义一个待用字符变量
     if((fp=fopen("test.txt","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("test.txt","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 
#include 
#include 
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 
#include 
#include 
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
#include
#include
int main()
{
	char str1[20],str2[20];
	FILE*fp;
	if((fp=fopen("text.txt","r+"))==NULL)   //以读写的方式打开test
	{
		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()函数结合使用能够完成大多数任务。
C语言文件操作--文本文件详解(附代码)_第2张图片
以上是小编将自己对文件操作中的对文本文件操作的理解,分析,看法融入其中,如有发现问题,请在评论区留下你宝贵的意见。

你可能感兴趣的:(C语言,C语言文件操作,C语言,编程语言,文本操作)