文件文本的读写

该程序演示了如何使用C语言进行文本文件操作,包括用fgets和fgetc函数读取文件内容,fopen和fclose函数打开和关闭文件,以及利用fseek和switch实现文件的追加或重写。用户可以选择对文本进行追加或重写,并输入相应的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:

熟悉C语言的文本操作的相关的函数及其应用,掌握文件的打开与关闭,字符和字符串的读写以及文本文件的重写或者追加。

原理:

运用函数对文本文件进行存储的操作。

②用fopen函数打开fgets输出一行fputc输出一个字符fseek操作文件指针操作文件指针fclose关闭文件switch函数进行选择性跳转。

代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
      FILE *fp1,*fp2;
      char ch1[1000]={0},ch2;
      int a,b;
      fp1=fopen("D:\\daima\\dream01.txt","r");                 //打开要读取的t1文本
      printf("文本文件dream.01中的文本为:\n");
      if(fp1==NULL)                                //判断文件是否存在
        printf("文本文件dream01不存在\n");
        printf("第一次输出dream01中的文本:\n");       //第一次对t1文本按行输出
        while(fgets(ch1,1000,fp1)!=NULL)
        printf("%s",ch1);
        fseek(fp1,0L,0);                         //把文件指针指向文件首
        printf("\n第二次输出dream01中的文本:\n");     //第二次是对t1文本按每个字符进行输出
        while((ch2=fgetc(fp1))!=EOF)
        {
           printf("%c",ch2);
        }

      printf("\n请选择对dream02中的文本进行追加还是重写请输入1或2: 1 追加,2 重写\n");//输入要对t2文本重写还是追加
      tiao: scanf("%d",&ch2);         //创建goto要跳转到的位置
      switch(ch2)                    //对t2用重写或者追加方式打开
      {
          case 1:fp2=fopen("D:\\daima\\dream02.txt","a");break;
          case 2:fp2=fopen("D:\\daima\\dream02.txt","w");break;
          default :printf("请输入1或者2\n");goto tiao;//若输入的不是1或者2.则跳转到tiao的位置
      }
      printf("要追加或重写几行?\n");
      scanf("%d",&a);                 //输入要追加或重写几行文本
      printf("请输入第一次要追加或重写的东西:\n");
      for(b=0;b<a;b++)               //输入文本
      {
           printf("第%d组:",b+1);
           scanf("%s",ch1);
           fputs(ch1,fp2);
           fputs("\n",fp2);
      }
       if(ch2==1)                  //判断对t2的写的方式是重写还是追加
           printf("追加完成");
        else printf("重写完成");
        fclose(fp1);                 //关闭文件f1
        fclose(fp2);                 //关闭文件f2
}

结果:

结果分析:

先用读取一行一个的来读取dream01中的全部文本,然后用一个字符一个字符的读取,紧接着选择对文本dream02进行那种操作的方式并且选择要操作几行,其次对文本进行输入,最后最文本在dream02中输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值