你真的能區別putc()函數和fputc()函數的意義嗎?

最近小編在講關於C語言文件部分內容,講到了fputc()函數。前面在講字符串的時候,我們還學習過putc()函數,我們知道,putc()函數一般用於標準輸出,fputc()函數一般用於文件讀寫。剛纔呢,有一個童鞋在單字符寫文件時,調用了putc()函數,另一個童鞋看到了就說必須要調用fputc()函數,爲此,兩個童鞋爭論起來。那麼真相是什麼呢?

在這裏呢,小編就對比着講解一下這兩個函數,看到底能不能調用putc()函數寫入單個字符到文件中。

第1點 putc()函數
putc()函數是stdio.h標準庫中的函數,用於將一個字符輸出到指定流中,函數聲明是這樣的。

int putc(int ch, FILE * fp);

它有兩個參數,ch參數呢表示一個字符;fp參數呢表示一個文件指針,也就是輸出流,可以是文件輸出流也可以是標準輸出流,如果是文件輸出流,fp就是一個文件指針,將字符ch寫入到文件中,如果是標準輸出流,fp就是stdout,將字符ch輸出到控制檯。

putc()函數的返回值是一個int類型的數據,它將輸出的字符以整型數據的形式返回,即返回輸出字符的ASCII碼值。

舉個“栗子”:

//定義文件指針fp,指向文件a.txt

FILE* fp = fopen("a.txt","w");

//將字符a寫入文件a.txt中

int num = putc('a',fp);

//將字符b輸出到控制檯

int ret = putc('b',stdout);

printf("num = %d\nret = %d\n", num, ret);

在上面幾行代碼中,第一次調用putc()函數將字符‘a’寫入到了文件a.txt,返回值賦值給num;第二次調用putc()函數,將字符‘b’輸出到控制檯,返回值賦值給ret。調用printf()函數輸出num與ret的值,分別爲97、98。

第2點 fputc()函數
fputc()函數比putc()函數多了一個字符‘f’,這個字符‘f’表示file的意思,表明fputc()函數是專用於文件操作的,它的函數聲明如下所示。

int fputc(int ch, FILE * stream);

fputc()函數的參數個數、參數含義及返回值與putc()函數完全相同,因此,雖然表面上fputc()函數專用於文件操作,但它其實也可以用於標準輸出。

fputc()函數的功能用法和putc()函數功能及用法完全相同。讀者可以將上面代碼中的putc()函數替換爲fputc()函數,其運行結果完全相同。

可不可以,試一試就知道。

所以,在向文件寫入單個字符時,兩個函數都可以使用,如果要強行說哪個更好的話,我推薦使用fputc()函數,因爲它加了一個‘f’呀,一看就知道是文件(file),不暈不花不糊塗。關於putc()函數與fputc()函數呢,今天我們就講到這裏,如果想進行更深入的學習,請關注黑馬程序員教程參與更多互動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章