二進制文件和文本文件的讀寫

  數據怎麼在磁盤上寫不是由文件打開方式決定的,而是由寫函數決定的。數據怎麼從磁盤上讀也不是由文件打開方式決定的,而是由讀函數決定的。
上面說的數據怎麼寫是指,一種類型的變量是怎麼存的?好比int 12,能夠直接存12的二進制碼(4個字節),也能夠存字符1,字符2.
數據怎麼讀的是指,我要讀一個int變量,是直接讀sizeof(int)個字節,仍是一個字符一個字符的讀,直到讀到的字符不是數字字符。函數

C裏面有兩組文件讀寫函數剛好支持上面兩種方式的讀寫:
1.二進制方式spa

fread(buffer,size,count,fp)
fwrite(buffer,size,count,fp)。//用來讀寫一個數據塊。它對應的是第一種存儲方式。直接按類型的字節長度指定讀寫的字節數。

 

2.文本方式
fprintf函數和fscanf函數.它對應的是第二種讀寫方式。即以字符的方式讀寫。
fprintf函數、fscanf函數與printf函數、scanf函數的做用相仿,都是格式化讀寫函數。fprintf和fscanf函數的讀寫對象是磁盤文件,而printf和scanf函數的讀寫對象是終端。)
它們的通常調用格式爲:指針

fprintf(文件指針,格式字符串,輸出列表);//寫函數
fscanf (文件指針,格式字符串,輸入列表);//讀函數

 

#include <stdio.h>

void main(){

    FILE *fp;
    char s[]= "This is a string.",s1[30];
    char c = '\n';

    fp = fopen("file.txt","a");
    fprintf(fp,"%s%c",s,c);

    fclose(fp);
    fp=fopen("file.txt","r");
    fscanf(fp, "%[^\n]\n", s1);
    printf("%s\n",s1);
    fclose(fp);

}

 


補充:文件結束符
文本文件適用:
EOF:經過#define EOF (-1) ,判斷文件指針指向的值是否爲EOF來判斷是否結束
二進制適用:
feof(FILE *p):避免了二進制中須要的文件中出現-1二被EOF誤判爲結束符,出現的一種操做,遇到結束返回1,不然返回0.code

相關文章
相關標籤/搜索