C語言中關於檔案操作的一些用法

2021-07-03 02:43:21 字數 3015 閱讀 3865

這些都是我在學習中所作筆記,加以整理後,分享給一些c基礎知識太不紮實的同學們,有錯的地方還望指正,謝謝!
是一種能夠向使用者指定的檔案中讀入乙個字串的函式,當成功寫入乙個字串後,檔案的指標位置會進行自動後移,函式返回為乙個非負整數,否則返回eof(符號常量,值為-1)(下面通過例項會進行詳細介紹)
從檔案結構體指標stream中讀取資料,每次讀取一行。讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize-1個字元(第bufsize個字元賦'\0'),如果檔案中的該行,不足bufsize個字元,則讀完該行就結束。如若該行(包括最後乙個換行符)的字元數超過bufsize-1,則fgets只返回乙個不完整的行,但是,緩衝區總是以null字元結尾,對fgets的下一次呼叫會繼續讀該行。函式成功將返回buf,失敗或讀到檔案結尾返回null。因此我們不能直接通過fgets的返回值來判斷函式是否是出錯而終止的,應該借助feof函式或者ferror函式來判斷。
格式:

——–fgets(char * restrict str, int size, file * restrict stream);

引數解釋:

str:字元型指標,指向用來儲存所得資料的位址。

size:整型資料型別,用來表示儲存資料的大小。

stream:表示檔案結構體指標,將要讀取的檔案流。

——–fputs(const char * restrict s, file * restrict stream);

引數解釋:

s:可以是字元型指標、字串常量或者存放字串的陣列用來接收即將寫入的字串。

stream:表示即將寫入的檔案所指向的那個指標。

#include

#include

#define size 32

int main(int argc,const

char *argv)

; //------------定義乙個指向將內容寫進檔案的指標並初始化。

file *wfp = null;

//開啟要讀取內容的檔案

fp = fopen("/users/qingyun/desktop/qingyun.txt","r");

//------------判斷檔案是否正常開啟。

if (null == fp)

//------------開啟要寫內容的檔案。

wfp = fopen("/users/qingyun/desktop/nihao.txt","w");

if (null == wfp)

//-----------檢查是否檔案讀完,未讀完就繼續迴圈,直到讀完為止。

while (fgets(buffer,size,fp) != null)

fclose(fp);

return

0;}

2.fread()和fwrite()

這一對檔案操作函式,用法跟上面用法有一些相似之處,但是又比上面那一對兒要實用。

fread():

格式:fread(void * restrict ptr, size_t size, size_t nitems,file * restrict stream);

含義:——從檔案指標stream所指的檔案中讀入nitems次資料塊,每塊大小為size位元組,並儲存到指標ptr所指向的記憶體中。

fwrite():

格式:fread(void * restrict ptr, size_t size, size_t nitems,file * restrict stream);

含義:——-從指標stream所指向的檔案寫入nitems次資料塊,每塊大小為size位元組,並儲存到指標ptr所指向的記憶體中。

例項fwrite():

#include

#include

#include

#define namesize 10

#define stunum 5

typedef

struct studentstu;

char students[stunum][namesize] = ;

int main(int argc,const

char *argv)

stu = malloc(sizeof(stu));

stu *currentstu = stu;

for (int i = 0;i < stunum;i++)

size_t nwritecount = fwrite(stu,sizeof(stu),stunum,fp);

if (nwritecount != stunum)

free(stu);

fclose(fp);

return

0;}

例項fread():

#include

#include

#define stunum 5

#define namesize 20

typedef

struct studentstu;

int main(int argc,const

char *argv)

; file *fp = null;

fp = fopen("/users/qingyun/desktop/stu.txt","r");

if(null == fp)

//----------開啟成功後,則使用fread來讀取檔案的內容

int nreadcount = fread(buffer,sizeof(stu),stunum,fp);

//----------根據讀檔案函式的返回值來判斷是否讀成功

if (stunum != nreadcount)

//-----------列印讀出的內容

for (int i = 0;i < stunum;i++)

fclose(fp);

return

0;}

關於C語言中陣列的一些特性

c語言的陣列是c語言中比較特殊的一種資料型別。這種資料型別由元素型別和元素個數共同決定。並且元素計數是從0開始到數字大小減去1。陣列名是陣列的名字。在使用它的時候需要注意c語言中的規定。首先我們來看一維陣列 include int main printf p n num printf p n num...

關於C語言中檔案操作的一些知識(小白剛體驗)

這兩天做乙個c的課程設計,其中涉及到了挺多的檔案處理,首先面臨的問題是從檔案中獲取我需要的內容。最大的發現也在於這裡 當我使用fgets 函式時,好玩的東西出現了,當前我的檔案中的內容為 4 2 我使用fgets 函式進行讀取 fgets str 6 fp 其中str為我定義的字元型陣列,接下來我進...

關於檔案的一些操作

今天遇到一些關於檔案的知識點 codeblocks16.0裡面不支援 include只有 include使用時要把std包包含在裡面 using namespace std 而vc6.0卻不能使用這個包 下面是課件上的一些知識點,以後用到的時候再拿出來看看吧 include void main in...