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