日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言里的文件函数

發布時間:2024/1/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言里的文件函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1File?*pf?=?fopen("文件名","打開方式");

文件名可以加路徑,兩個"\\"或者一個"/"

打開方式有這么幾種:r只讀,r+可讀可寫,w只寫,w+可讀可寫,會覆蓋。a追加,a+可讀可寫。

2、對于windows系統來講,都可以帶上b,因為在windows系統下,還是有這個區分的。

尤其是這個回車轉義字符。因為在?windows下面,\r\n代表回車,而在linux/unix系統的文本文件下,\n就代表一個回車。

?

3Fopen?和?fclose要成對出現。就跟mallocfree一樣,打開不關,跟申請了不釋放一樣,都會造成不安全的。所以一定要成對出現。

Fclose(pf);

?

4、getc()?和?putc()?得到一個?字符,和送出一個字符。

示例用法:

Int main(){FILE *pf = fopen("a.txt","r");Char c =0;While( (c=getc(pf))!=EOF){Printf("%c",c);}Printf("\n讀取結束\n");Fclose(pf);Getchar();Return 0; } Int main(){FILE *pf = fopen("b.txt","w");Char c[]="lifei";Int i = 0;For(;i<strlen(c);i++){Putc(c[i],pf);}Printf("寫入結束\n");Fclose(pf);Getchar();Return 0; }

?

5、EOF?的值是-1代表文件結束。函數feof(pf)?用來判定一個文件是否已經到文件結尾了。如果到結尾的話,返回真,否則返回假?

示例用法:

EOF跟上面的第四個點的第一個案例是相同的。

?

Int main(){FILE *pf = fopen("a.txt","r");Char buf[1024] = {0};while (!feof(pf)){ //如果沒有到文件結尾為真就繼續執行。fgets(buf, sizeof(buf), pf);printf(buf);}printf("\n讀取結束\n");fclose(pf);getchar();return 0; }

?

6、有幾個函數總是蒙蔽。。。

?

Printf()

?

Sprintf();

?

Fprintf();

?

總是不知道誰是誰,干嗎用的。現在就來厘清一下他們的關系:

?

Printf();我們接觸最多,是用于輸出的,通常情況下直接輸出到屏幕。當然也可以輸出到文件中。

?

Sprintf();?是格式化輸出,目標是?一個字符串。它比printf就多一個參數,就是最前面的字符數組,用于接收被輸出的對象。

?

Fprintf();是文件輸出,前面加上文件目標就可以了。

?

例程:

#include?<stdio.h>

#include?<string.h>

#pragma?warning(disable:4996)

int?main(){

FILE??*pf?=?fopen("a.txt",?"r");

FILE?*pfw?=?fopen("content.txt",?"w");

char?buf[1024]?=?{?0?};

char?forout[100]?=?{?0?};

int?i?=?1;

while?(!feof(pf)){

memset(buf,?0,?sizeof(buf));//這個?在?string.h?里面

fgets(buf,?sizeof(buf),?pf);

sprintf(forout,?"第?%d?行:%s",?i++,buf);//格式化輸出到字符數組中。

printf(forout);//輸出到顯示器

fprintf(pfw,"%s",forout);//輸出到文件

?

}

printf("\n讀取結束\n");

printf("寫出結束\n");

fclose(pf);

getchar();

return?0;

}

7、因為?fprintf();是打印數據到文件所以結合scanf()是從鍵盤得到數據,fscanf()就是從文件得到數據。

fgets()一樣,fscanf()也是從鍵盤上獲取數據,不過fgets()可以獲取文件結尾的回車符號,fscanf()不能獲取結尾的回車換行符號。

示例:

#include <stdio.h> #pragma warning(disable:4996)int main(){FILE *pf = fopen("a.txt","r");char buf[200] = { 0 };while (!feof(pf)){fscanf(pf, "%s", buf);printf("%s\n",buf);}printf("讀取結束");fclose(pf);getchar();return 0; }

8、stat函數

例程:

#include <stdio.h> #include <sys/stat.h> #pragma warning(disable:4996)int main(){//當你知道 只有跑可以追趕上別人的時候,你會不會跑?struct stat st;stat("main.c", &st);long len = st.st_size;printf("文件大小為:%d\n", len);getchar();return 0; }

打印文件:

#include <stdio.h> #include <sys/stat.h> #pragma warning(disable:4996)int main(){//當你知道 只有跑可以追趕上別人的時候,你會不會跑?struct stat st;stat("main.c", &st);long len = st.st_size;printf("文件大小為:%d\n", len);FILE *pf = fopen("main.c", "r");char buf[100] = { 0 };while (!feof(pf)){fgets(buf, sizeof(buf), pf);printf("%s", buf);}fclose(pf);getchar();return 0; }

?

?

#include <stdio.h> #pragma warning(disable:4996) int main(){FILE *pf = fopen("a.txt", "r");if (pf == NULL)return 0;int position = ftell(pf);printf("文件剛剛打開時候的位置%d\n",position);char buf[100] = { 0 }; char _4out[100] = { 0 };int i = 1;while (!feof(pf)){printf("currentPosition:%d", ftell(pf));fgets(buf, sizeof(buf), pf);sprintf(_4out, "第 %d 行:%s",i++, buf);printf(_4out);}printf("\n第一遍結束,下面第二遍輸出原文\n");printf("值得注意的是:在windows文本文件環境下,一個回車由\\r\\n兩個字符組成,所以第一行有八個字節,等到再次讀取的時候當前位置是8.\n");fseek(pf, 0, SEEK_SET);while (!feof(pf)){printf("當前位置:%d", ftell(pf));fgets(buf, sizeof(buf), pf);printf(buf);}fclose(pf);getchar();return 0; }

?

?

轉載于:https://www.cnblogs.com/letben/p/5252158.html

總結

以上是生活随笔為你收集整理的C语言里的文件函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。