C语言修行之文件操作

来源:互联网 发布:百度评论数据怎么更新 编辑:程序博客网 时间:2024/06/04 18:02
       C语言对文件的操作主要是流式文件的打开、关闭、读写、定位等各种操作。

    所谓流式文件是指:用字符串方式存储信息。如最常用的文本文件。

    从存储方式上来看,文件可以分为文本文件和二进制文件。

    下面将具体介绍文件的相关知识:

    1.文件指针:定义文件指针的一般方式为:FILE *fp 其中fp为指针变量标识符,FILE必须大写。

    2.文件的打开和关闭:

    文件打开

    模板:FILE *fp=fopen(const char *path,const char *mode)

         if(fp==NULL)

           printf("failed!");

          else

           //处理语句;  

    文件关闭:

    int fclose(*fp)

    关闭文件,如果成功返回0,否则关闭失败。

    3.文件读写

    char ch=fgetc(fp)

    char ch=getc(f)

    上述两个函数功能一样,从文件中读取数据,读取是按照字节进行的,系统自动分配一个指针,每次读取完毕,自动向后移动一个字节。

    putc('a',fp)和fputc('a',fp)函数的功能也是一样的,向文件中加入一个字符。文件首先要打开,可以以写、读写、追加方式打开,如果以前两种方式打开,则原内容被覆盖。

    字符串读写函数:fputs(字符串,文件指针)和fgets(字符数组名,n,文件指针).其中n是一个正整数,表示从文件中读出的字符串不超过n-1个,在读入的最后一个字符后追加结束标志“\0”。

    测试代码:

   

#include<stdio.h>#include"stdlib.h"void main(){ FILE *fp; char ch; printf("Please input a string\n"); fp=fopen("D:\\a.txt","w"); if(fp==NULL) {  printf("打开文件失败!\n");  exit(1); } ch=getchar();//文件写入 while(ch!='\n') {  fputc(ch,fp);  ch=getchar(); } fclose(fp); //文件读取 fp=fopen("D:\\a.txt","r"); ch=fgetc(fp); while(ch!=EOF) {  putchar(ch);  ch=fgetc(fp); } fclose(fp);}

4.文件格式化输入和输出

 fscanf(fp,"%d,%d....",a,b,...)

 fprintf(fp,"%d,%d....",a,b,...)

 5.数据块的读写函数

fread和fwrite函数可以用来读写一组数据(一个数组元素,结构体变量)

模板:

fread(buffer,size,count,fp)

fwrite(buffer,size,count,fp)

其中,buffer是一个指针,在fread中,表示存放输入数据的首地址,在fwrite中,表示存放输出数据的首地址。size表示块的大小,count表示要读写的数据块的块数。fp表示文件指针。

  6.字的输入输出函数,一次读写一个word。

int getw(FILE *fp);如果读取成功返回读取信息,否则返回EOF。

int putw(int w,FILE *fp);如果成功,写入w,否则返回EOF。

  7.文件删除

使用remove(文件名字)删除文件,如果成功返回0.

#include<stdio.h>void main(){ char address[20]; printf("please input the address of the file you want to delete:"); gets(address); if(remove(address)==0)  printf("success!\n"); else  printf("failed");}

8.重命名文件

使用rename(旧文件名,新文件名)函数进行文件重新命名。程序实例如下:

#include<stdio.h>void main(){ char oldaddress[20]; char newaddress[20]; printf("please input the oldaddress of the file :"); gets(oldaddress); printf("please input the newaddress you want to rename:"); gets(newaddress); if(rename(oldaddress,newaddress)==0)  printf("success!\n"); else  printf("failed");}

注意:更名前后文件的路径是处于同一目录下,心文件名不可以和文件路径下的其他文件重命。

9.实现文件复制

学了文件的打开,操作之后,现在实现对文件的复制,实例如下:

#include<stdio.h>void main(){ char yuanfile[30]; char xinfile[30]; FILE *fp1; FILE *fp2; char ch; printf("please input the name of yuanfile:"); gets(yuanfile); printf("please input the name of xinfile:"); gets(xinfile); if((fp1=fopen(xinfile,"w"))==NULL)  printf("failed!\n"); if((fp2=fopen(yuanfile,"r"))==NULL)  printf("failed!\n"); ch=fgetc(fp2); while(ch!=EOF) {  fputc(ch,fp1);  ch=fgetc(fp2); } fclose(fp2); fclose(fp1);

}

 

                                                                                             

原创粉丝点击