C語言中數據輸入輸出到文件操作freopen()函數(1)


例題一、把短句 “Hello World!” 保存到磁盤文件f1.txt中。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp;                                     /* 定義文件指針*/

    if( ( fp = fopen("f1.txt", "w") ) == NULL){    /* 打開文件 */
           printf("File open error!\n");
           exit(0);
    }
    fprintf( fp, "%s", "Hello World! " );            /* 寫文件 */    

        if( fclose( fp ) ){                         /* 關閉文件 */
        printf( "Can not close the file!\n" );
        exit(0);
    }

    return 0;
}

用文件指針指示文件緩沖區中具體讀寫的位置
FILE   *fp;

自定義類型(typedef):

1、將C語言中的已有類型(包括已定義過的自定義類型)重新命名
2、新的名稱可以代替已有數據類型
3、常用於簡化對復雜數據類型定義的描述
typedef  <已有類型名>  <新類型名>;

typedef  int   INTEGER;
           int  i, j;       <====>    INTEGER  i, j;  

typedef   int*  POINT;
           int*  p1;       <====>    POINT  p1;  

自定義類型(typedef)的使用方法

1、定義變量            int  i
2、變量名新類型名      int  INTEGER
3、加上 typedef                 typedef  int  INTEGER
4、用新類型名定義變量        INTEGER  i;


int NUM[10]
typedef   int  NUM[10]
NUM   a  <===>  int a[10]

 例題二

已知一個數據文件f.txt中保存了5個學生的計算機等級考試成績,包括學號、姓名和分數,文件內容如下,請將文件的內容讀出並顯示到屏幕中。
 
301101  張文   91
301102  陳慧   85
301103  王衛東  76
301104  鄭偉   69
301105  郭溫濤   55

#include "stdio.h"
int main(void)
{       FILE * fp;                                        /* 定義文件指針*/
       long num;
       char stname[20];
       int  score;
      if((fp = fopen("f.txt", "r")) == NULL){      /* 打開文件  */
           printf("File open error!\n");
           exit(0);
    }

        while( !feof(fp) ){
           fscanf(fp, "%ld%s%d", &num, stname, &score);
              printf("%ld    %s %d\n", num, stname, score);  
    };

    if( fclose(fp) ){                        /* 關閉文件  */
            printf( "Can not close the file!\n" );
            exit(0);
    }
}
if((fp = fopen("f.txt", "r")) == NULL){
    printf("File open error!\n");
    exit(0);
}
fopen("文件名""文件打開方式")

函數fopen() 的返回值
1、執行成功,則返回包含文件緩沖區等信息的FILE型地址,賦給文件指針fp
2、不成功,則返回一個NULL(空值)
   exit(0):關閉所有打開的文件,並終止程序的執行
   參數0表示程序正常結束;非0參數通常表示不正常的程序結束

fp = fopen("f.txt", "r")文件打開方式參數表

 

文件讀寫與打開方式

if 讀文件
    指定的文件必須存在,否則出錯;
if 寫文件(指定的文件可以存在,也可以不存在)
    if"w" 方式寫
        if 該文件已經存在
            原文件將被刪去重新建立;
        else 
            按指定的名字新建一個文件;
    else if"a" 方式寫
        if 該文件已經存在
           寫入的數據將被添加到指定文件原有數據的后面,不會刪去原來的內容;
        else 
            按指定的名字新建一個文件(與“w”相同);
if  文件同時讀和寫
        使用 "r+""w+""a+" 打開文件 

關閉文件

if( fclose(fp) ){
    printf( "Can not close the file!\n" );
    exit(0);
}

fclose(文件指針)
把緩沖區中的數據寫入磁盤扇區,確保寫文件的正常完成
釋放文件緩沖區單元和FILE結構體,使文件指針與具體文件脫鈎。

函數fclose() 的返回值
返回0:正常關閉文件
返回非0:無法正常關閉文件

文件復制

已知一個文本數據文件f1.txt,請將該文件復制一份,保存為f2.txt。

新建一個文本文件f1.txt,將該文件與源程序放在同一目錄下,執行程序,觀察結果。

#include <stdio.h>
int main(void)
{       FILE *fp1,*fp2;
       char c;

    if(( fp1 = fopen( "f1.txt", "r" )) == NULL)
    {
        printf(" File open error!\n" );
        return 0;
       }
       if(( fp2 = fopen( "f2.txt", "w" )) == NULL)
    {
           printf(" File open error!\n" );
           return 0;
       }
       while( !feof( fp1 ) ){
         c = fgetc( fp1 );
         fputc(c, fp2);
       }
       fclose( fp1 );
       fclose( fp2 );
       return 0;
}

打開多個文件

if((fp1 = fopen(f1.dat, "r")) == NULL){
    printf("File open error!\n");
    exit(0);
}
if((fp2=fopen("f2.dat", "w")) == NULL){
    printf("File open error!\n");
       exit(0);
}
C語言允許同時打開多個文件
不同的文件對應不同的文件指針
不允許同一個文件在關閉前再次打開

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM