C语言文件操作一

文件在C语言的定义如下:

typedef struct _iobuf
{
    char*   _ptr;
    int _cnt;
    char*   _base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char*   _tmpfname;
} FILE; //可以使用FILE来定义变量

文件操作在C语言中的定义:
/*
 * File Operations
 */
_CRTIMP FILE* __cdecl __MINGW_NOTHROW fopen (const char*, const char*);
_CRTIMP FILE* __cdecl __MINGW_NOTHROW   freopen (const char*, const char*, FILE*);
_CRTIMP int __cdecl __MINGW_NOTHROW fflush (FILE*);
_CRTIMP int __cdecl __MINGW_NOTHROW fclose (FILE*);
//关闭文件
文件的打开函数
fopen (const char*, const char*);
第一个参数:文件名
第二个参数:文件打开方式

   文件使用方式:
      /*文件的使用方式总结:

         "r" (只读)  以只读方式打开文本文件
         "w" (只写) 打开或者建立一个文本文件,只允许写数据(会清空原有数据)
         "a" (追加) 打开一个文本文件,并在末尾写数据

         "rb" (只读) 以只读方式打开二进制文件
         "wb: (只写) 打开或者建立一个二进制文件,只允许写数据
         "ab" (追加) 打开一个二进制文件,并在末尾写数据

         "r+" (读写) 打开一个文本文件,允许读和写
         "w+" (读写) 打开或者建立一个文本文件,允许读写
         "a+" (读写) 打开一个文本文件,读或者在文件末尾写数据

         "rb+" (读写) 打开一个二进制文件,允许读和写
         "wb+" (读写) 打开或者一个二进制文件,允许读和写
         "ab+" (读写) 打开一个二进制文件,读或者在文件末尾写数据
    */

补充一下字符输出输入功能函数:

/*
 * Character Input and Output Functions
 */

_CRTIMP int __cdecl __MINGW_NOTHROW fgetc (FILE*);
/*fgetc (FILE*)读取到文件的是第一个字符
* 文件结束集返回EOF
*/
_CRTIMP char* __cdecl __MINGW_NOTHROW   fgets (char*, int, FILE*);
/* 读取文件字符串
* fgets(字符数组名,字符串中字符个数,文件指针)
*/
_CRTIMP int __cdecl __MINGW_NOTHROW fputc (int, FILE*);
/*把一个字符写入到磁盘文件中
*    int:写入的字符
*    FILE*:指向操作的文件指针
*    函数输出成功时,返回输入的字符,失败则返回EOF
*/
_CRTIMP int __cdecl __MINGW_NOTHROW fputs (const char*, FILE*);
/*  写入字符串到文件
*  fputs(字符串常量,文件指针)
*    const char*:写入的字符串
*    FILE*:指向操作的文件指针
*/
_CRTIMP char* __cdecl __MINGW_NOTHROW   gets (char*);
_CRTIMP int __cdecl __MINGW_NOTHROW puts (const char*);
_CRTIMP int __cdecl __MINGW_NOTHROW ungetc (int, FILE*);

实例一:文件的读取

#include <stdio.h>
int main()
{
          FILE *fp1, *fp2, *fp3;
          char file1[20], file2[20], file3[20], ch;
          int file_number;//文件个数
          printf("please input file1\n");
          gets(file1);//输入文件路径和名称
          printf("file1:\n");
          if((fp1=fopen(file1,"r"))!=NULL){
                ch=fgetc(fp1);//读取文件内容,此时ch的内容是文件的第一个文本数据
                while(ch!=EOF){//循环遍历文件内容;文本内容结束或者没有就返回EOF
                    putchar(ch);//输出字符
                    ch=fgetc(fp1);//读取下一个文本数据
                   }//读取字符
          }else{//文件为空的话就退出
            printf("can not open");
           exit(1);
          }


          printf("\n please input file2\n");
          gets(file2);//输入文件路径和名称
          printf("file2:\n");
          if((fp2=fopen(file2,"r"))!=NULL){
                ch=fgetc(fp2);//读取文件内容
                while(ch!=EOF){//循环遍历文件内容
                    putchar(ch);//输出字符
                    ch=fgetc(fp2);}//读取字符
          }else{//文件为空的话就退出
            printf("can not open");
           exit(1);
          }

           printf("please input file3\n");
            gets(file3);//输入文件路径和名称
          printf("file3:\n");
          if((fp3=fopen(file3,"r"))!=NULL){
                ch=fgetc(fp3);//读取文件内容
                while(ch!=EOF){//循环遍历文件内容
                    putchar(ch);//输出字符
                    ch=fgetc(fp3);}//读取字符
          }else{//文件为空的话就退出
            printf("can not open");
           exit(1);
          }
       fclose(fp1);
       fclose(fp2);
       fclose(fp3);
        return 0;
}


实例二:往文件写入数据
#include <stdio.h>
#include<stdlib.h>
int main()
{
  int a;
  FILE *fp;
  char ch, filename[20];
  printf("请输入文件名:\n");
  scanf("%s",filename);//名输入文件
  if((fp=fopen(filename,"w"))==NULL){
     printf("不能打开文件\n");
     exit(0);
  }
   ch=getchar();//接收输入字符,赋给ch
   while(ch!='#'){
     fputc(ch,fp);//将读入的字符写入文件
     ch=getchar();
        }
   fclose(fp);
   return 0;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值