C語言修行之文件操作

       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);

}

 

                                                                                             

發佈了26 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章