最近小編在講關於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()函數呢,今天我們就講到這裏,如果想進行更深入的學習,請關注黑馬程序員教程參與更多互動。