c--文件讀寫--文本讀寫


#include <stdio.h>

int main()
{
    FILE *fp=fopen("ss.txt","r"); //打開文件並創建文件指針 //實際上是由系統定義的一個結構,該結構中含有文件名、文件狀態和文件當前位置等信息 
    //在進行讀寫操作之前要先打開,使用完畢要關閉
    //在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL
    /*
    r(read): 只讀
    r+   :   打開讀寫,從文件頭開始 
    w(write): 只寫,如果存在則清空,如果不存在則新建 
    w+    : 打開可讀/寫文件,如果存在則清空,如果不存在則新建
    a(append): 追加,以附加方式打開只寫文件,如果不存在則新建,如果文件存在則文件尾開始--只寫
   a+ :
以附加方式打開可寫/讀文件,如果不存在則新建,如果文件存在則文件尾開始
t(text): 文本文件,可省略不寫 
b(banary): 二進制文件
x : 只新建,如果文件已經存在則不能打開
“rt”      只讀打開一個文本文件,只允許讀數據
“wt”      只寫打開或建立一個文本文件,只允許寫數據
“at”      追加打開一個文本文件,並在文件末尾寫數據
“rb”      只讀打開一個二進制文件,只允許讀數據
“wb”       只寫打開或建立一個二進制文件,只允許寫數據
“ab” 追加打開一個二進制文件,並在文件末尾寫數據
“rt+”      讀寫打開一個文本文件,允許讀和寫
“wt+”      讀寫打開或建立一個文本文件,允許讀寫
“at+”      讀寫打開一個文本文件,允許讀,或在文件末追加數 據
“rb+”      讀寫打開一個二進制文件,允許讀和寫
“wb+”      讀寫打開或建立一個二進制文件,允許讀和寫
“ab+” 讀寫打開一個二進制文件,允許讀,或在文件末追加數據
*/

if(fp){ int num,num1; fscanf(fp,"%d",&num); //從文件中讀取格式化輸入

//從文件中讀取一個數,放到num變量中

//移動文件指針
printf(
"%d\n",num);

int n=fclose(fp) ;//關閉文件

//正常完成關閉文件操作時,fclose函數返回值為0。如返回非零值則表示有錯誤發生
}

else{
printf(
"%s\n","文件沒有打開"); }

return 0; }

fscanf說明:

格式:int fscanf(FILE *stream, const char *format, ...)  

返回值:如果成功,該函數返回成功匹配和賦值的個數。如果到達文件末尾或發生讀錯誤,則返回 EOF

 參數1:FILE *stream   文件指針

參數2:const char *format

格式:%[*][width][modifiers]type]

*       : 這是一個可選的星號,表示數據是從流 stream 中讀取的,但是可以被忽視

width:     讀取的最大字符數

modifiers :為對應的附加參數所指向的數據指定一個不同於整型(針對 d、i 和 n)、無符號整型(針對 o、u 和 x)或浮點型(針對 e、f 和 g)的大小: h :短整型(針對 d、i 和 n),或無符號短整型(針對 o、u 和 x) l :長整型(針對 d、i 和 n),或無符號長整型(針對 o、u 和 x),或雙精度型(針對 e、f 和 g) L :長雙精度型(針對 e、f 和 g)

type:

 

        int c=fgetc(fp);//讀取一個字符(一個無符號字符),並把位置指針往前移動
        //返回讀取的字符ASCii碼,如果到達文件末尾或發生讀錯誤,則返回 EOF
        printf("%c\n",c);

 

 

#include <stdio.h>

int main()
{
    FILE *fp=fopen("ss.txt","w+"); 
        
    if(fp){
        
        fprintf(fp, "%s %s %s %d", "We", "are", "中國人", 1968);//寫文件 
                
        
        int n=fclose(fp) ;
        
    }
    else{
        printf("%s\n","文件沒有打開");
    }
    
    
    return 0;
}

 

fprintf說明:格式   int fprintf(FILE *stream, const char *format, ...)

把內容寫到文件

看  https://www.runoob.com/cprogramming/c-function-fprintf.html  

 

 

 

#include <stdio.h>

int main(void){
    int a[]={10,20,30,40,50,60,70,80};
    FILE *fp=fopen("ss.txt","w+"); 
    int len=sizeof(a)/sizeof(a[0]);
    if (fp){
        
        unsigned long num=fwrite(a, sizeof(a[0]), len, fp);//向流steam寫數據 
        /*
        參數1:要寫入的數組指針
        參數2:要被寫入的每個元素的大小,以字節為單位-unsigned long 
        參數3:元素的個數-unsigned long 
        參數4:文件指針 
        返回值:失敗返回-1;成功返回寫入的數據個數; 
        */
        printf("寫了%d個數據\n",num);
        //int n=fclose(fp) ;
                
    }
    else{
        printf("文件打開失敗--寫\n");
    }
    
    
    int b[8];
    rewind(fp) ;//設置讀寫指針到文件的開頭
        unsigned long num= fread(b, sizeof(int), 8, fp);//讀取數據 
        /*
        參數1:用來保存數據的char*;注意大小要大於等於讀取的字節數
        參數2:要讀取的每個元素的大小,以字節為單位 
        參數3:元素的個數
         參數4:文件指針
         返回值:失敗返回-1;成功返回讀取的數據個數 
        */
        
        for (int i=0;i<8;i++){
            printf("b[%d]=%d\n",i,b[i]);
        }
        printf("讀了%d個數據\n",num);
        
         
    
    
    int n=fclose(fp) ;
    
}

 

 

 

 

 

 

 

 


免責聲明!

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



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