c语言输入与输出库函数#includestdio.h
last modified: 2010-05-28
輸入與輸出<stdio.h>
?
頭文件<stdio.h>定義了用于輸入和輸出的函數(shù)、類型和宏。最重要的類型是用于聲明文件指針的FILE。另外兩個(gè)常用的類型是size_t和fpos_t,size_t是由運(yùn)算符sizeof產(chǎn)生的無符號整類型;fpos_t類型定義能夠唯一說明文件中的每個(gè)位置的對象。由頭部定義的最有用的宏是EOF,其值代表文件的結(jié)尾。
1.1 文件操作
?
1.1.1 fopen
?
#include <stdio.h> FILE *fopen(const char *filename, const char *mode); 返回:成功為FILE指針,失敗為NULL打開以filename所指內(nèi)容為名字的文件,返回與之關(guān)聯(lián)的流。
mode決定打開的方式,可選值如下:
| "r" | 打開文本文件用于讀 |
| "w" | 創(chuàng)建文本文件用于寫,并刪除已存在的內(nèi)容(如果有的話) |
| "a" | 添加;打開或創(chuàng)建文本文件用于在文件末尾寫 |
| "rb" | 打開二進(jìn)制文件用于讀 |
| "wb" | 創(chuàng)建二進(jìn)制文件用于寫,并刪除已存在的內(nèi)容(如果有的話) |
| "ab" | 添加;打開或創(chuàng)建二進(jìn)制文件用于在文件末尾寫 |
| "r+" | 打開文本文件用于更新(即讀和寫) |
| "w+" | 創(chuàng)建文本文件用于更新,并刪除已存在的內(nèi)容(如果有的話) |
| "a+" | 添加;打開或創(chuàng)建文本文件用于更新和在文件末尾寫 |
| "rb+"或"r+b" | 打開二進(jìn)制文件用于更新(即讀和寫) |
| "wb+"或"w+b" | 創(chuàng)建二進(jìn)制文件用于更新,并刪除已存在的內(nèi)容(如果有的話) |
| "ab+"或"a+b" | 添加;打開或創(chuàng)建二進(jìn)制文件用于更新和在文件末尾寫 |
后六種方式允許對同一文件進(jìn)行讀和寫,要注意的是,在寫操作和讀操作的交替過程中,必須調(diào)用fflush()或文件定位函數(shù)如fseek()、fsetpos()、rewind()等。
文件名filename的長度最大為FILENAME_MAX個(gè)字符,一次最多可打開FOPEN_MAX個(gè)文件(在<stdio.h>中定義)。
?
1.1.2 freopen
?
#include <stdio.h> FILE *freopen(const char *filename, const char *mode, FILE *stream); 返回:成功為stream,失敗為NULL以mode指定的方式打開文件filename,并使該文件與流stream相關(guān)聯(lián)。freopen()先嘗試關(guān)閉與stream關(guān)聯(lián)的文件,不管成功與否,都繼續(xù)打開新文件。
該函數(shù)的主要用途是把系統(tǒng)定義的標(biāo)準(zhǔn)流stdin、stdout、stderr重定向到其他文件。
?
1.1.3 fflush
?
#include <stdio.h> int fflush(FILE *stream); 返回:成功為0,失敗返回EOF對輸出流(寫打開),fflush()用于將已寫到緩沖區(qū)但尚未寫出的全部數(shù)據(jù)都寫到文件中;對輸入流,其結(jié)果未定義。如果寫過程中發(fā)生錯(cuò)誤則返回EOF,正常則返回0。
fflush(NULL)用于刷新所有的輸出流。
程序正常結(jié)束或緩沖區(qū)滿時(shí),緩沖區(qū)自動清倉。
?
1.1.4 fclose
?
#include <stdio.h> int flcose(FILE *stream); 返回:成功為0,失敗返回EOF刷新stream的全部未寫出數(shù)據(jù),丟棄任何未讀的緩沖區(qū)內(nèi)的輸入數(shù)據(jù)并釋放自動分配的緩沖區(qū),最后關(guān)閉流。
?
1.1.5 remove
?
#include <stdio.h> int remove(const char *filename); 返回:成功為0,失敗為非0值刪除文件filename。
?
1.1.6 rename
?
#include <stdio.h> int rename(const char *oldfname, const char *newfname); 返回:成功為0,失敗為非0值把文件的名字從oldfname改為newfname。
?
1.1.7 tmpfile
?
#include <stdio.h> FILE *tmpfile(void); 返回:成功為流指針,失敗為NULL以方式"wb+"創(chuàng)建一個(gè)臨時(shí)文件,并返回該流的指針,該文件在被關(guān)閉或程序正常結(jié)束時(shí)被自動刪除。
?
1.1.8 tmpnam
?
#include <stdio.h> char *tmpnam(char s[L_tmpnam]); 返回:成功為非空指針,失敗為NULL若參數(shù)s為NULL(即調(diào)用tmpnam(NULL)),函數(shù)創(chuàng)建一個(gè)不同于現(xiàn)存文件名字的字符串,并返回一個(gè)指向一內(nèi)部靜態(tài)數(shù)組的指針。
若s非空,則函數(shù)將所創(chuàng)建的字符串存儲在數(shù)組s中,并將它作為函數(shù)值返回。s中至少要有L_tmpnam個(gè)字符的空間。
tmpnam函數(shù)在每次被調(diào)用時(shí)均生成不同的名字。在程序的執(zhí)行過程中,最多只能確保生成TMP_MAX個(gè)不同的名字。注意tmpnam函數(shù)只是用于創(chuàng)建一個(gè)名字,而不是創(chuàng)建一個(gè)文件。
?
1.1.9 setvbuf
?
#include <stdio.h> int setvbuf(FILE *stream, char *buf, int mode, size_t size); 返回:成功返回0,失敗返回非0控制流stream的緩沖區(qū),這要在讀、寫以及其他任何操作之前設(shè)置。
如果buf非空,則將buf指向的區(qū)域作為流的緩沖區(qū),如果buf為NULL,函數(shù)將自行分配一個(gè)緩沖區(qū)。
size決定緩沖區(qū)的大小。
mode指定緩沖的處理方式,有如下值:
- _IOFBF,進(jìn)行完全緩沖;
- _IOLBF,對文本文件表示行緩沖;
- _IOLNF,不設(shè)置緩沖。
?
1.1.10 setbuf
?
#include <stdio.h> void setbuf(FILE *stream, char *buf);如果buf為NULL,則關(guān)閉流stream的的緩沖區(qū);否則setbuf函數(shù)等價(jià)于:
?(void)setvbuf(stream, buf, _IOFBF, BUFSIZ)注意自定義緩沖區(qū)的尺寸必須為BUFSIZ個(gè)字節(jié)。
?
1.2 格式化輸出
?
1.2.1 fprintf
?
#include <stdio.h> int fprintf(FILE *stream, const char *format,…); 返回:成功為實(shí)際寫出的字符數(shù),出錯(cuò)返回負(fù)值按照format說明的格式把變量表中變量內(nèi)容進(jìn)行轉(zhuǎn)換,并寫入stream指向的流。
格式化字符串由兩種類型的對象組成:普通字符(它們被拷貝到輸出流)與轉(zhuǎn)換規(guī)格說明(它們決定變量的轉(zhuǎn)換和輸出格式)。每個(gè)轉(zhuǎn)換規(guī)格說明均以字符%開頭,以轉(zhuǎn)換字符結(jié)束。如果%后面的字符不是轉(zhuǎn)換字符,那么該行為是未定義的。
轉(zhuǎn)換字符列表如下:
| 字符 | 說明 |
| d, i | int;有符號十進(jìn)制表示法 |
| o | unsigned int;無符號八進(jìn)制表示法(無前導(dǎo)0) |
| x, X | unsigned int;無符號十六進(jìn)制表示法(無前導(dǎo)0X和0x),對0x用abcdef,對0X用ABCDEF |
| u | unsigned int;無符號十進(jìn)制表示法 |
| c | int;單個(gè)字符,轉(zhuǎn)換為unsigned char類型后輸出 |
| s | char *;輸出字符串直到'\0'或者達(dá)到精度指定的字符數(shù) |
| f | double;形如[-]mmm.ddd的十進(jìn)制浮點(diǎn)數(shù)表示法,d的數(shù)目由精度確定。缺省精度為6位,精度為0時(shí)不輸出小數(shù)點(diǎn) |
| e, E | double;形如[-]m.dddddde[+-]xx或者[-]m.ddddddE[+-]xx的十進(jìn)制浮點(diǎn)數(shù)表示法,d的數(shù)目由精度確定。缺省精度為6位,精度為0時(shí)不輸出小數(shù)點(diǎn) |
| g G | double;當(dāng)指數(shù)值小于-4或大于等于精度時(shí),采用%e或%E的格式;否則使用%f的格式。尾部的0與小數(shù)點(diǎn)不打印 |
| p | void *;輸出指針值(具體表示與實(shí)現(xiàn)相關(guān)) |
| n | int *;到目前為止以此格式調(diào)用函數(shù)輸出的字符的數(shù)目將被寫入到相應(yīng)變量中,不進(jìn)行變量轉(zhuǎn)換 |
| % | 不進(jìn)行變量轉(zhuǎn)換,輸出% |
在%與轉(zhuǎn)換字符之間依次可以有下列標(biāo)記:
| 標(biāo)記 | 說明 |
| - | 指定被轉(zhuǎn)換的變量在其字段內(nèi)左對齊 |
| + | 指定在輸出的數(shù)前面加上正負(fù)號 |
| 空格 | 如果第一個(gè)字符不是正負(fù)號,那么在其前面附加一個(gè)空格 |
| 0 | 對于數(shù)值轉(zhuǎn)換,在輸出長度小于字段寬度時(shí),加前導(dǎo)0 |
| # | 指定其他輸出格式,對于o格式,第一個(gè)數(shù)字必須為零;對于x/X格式,指定在輸出的非0值前加0x或0X;對于e/E/f/g/G格式,指定輸出總有一個(gè)小數(shù)點(diǎn);對于g/GG格式,還指定輸出值后面無意義的0將被保留。 |
| 寬度[number] | 一個(gè)指定最小字段寬的數(shù)。轉(zhuǎn)換后的變量輸出寬度至少要達(dá)到這個(gè)數(shù)值。如果變量的字符數(shù)小于此數(shù)值,那么在變量左/右邊添加填充字符。填充字符通常為空格(設(shè)置了0標(biāo)記則為0)。 |
| . | 點(diǎn)號用于把字段寬和精度分開 |
| 精度[number] | 對于字符串,說明輸出字符的最大數(shù)目;對于e/E/f格式,說明輸出的小數(shù)位數(shù);對于g/G格式,說明輸出的有效位數(shù);對于整數(shù),說明輸出的最小位數(shù)(必要時(shí)可加前導(dǎo)0) |
| h/l/L | 長度修飾符,h表示對應(yīng)的變量按short或unsigned short類型輸出;l表示對應(yīng)的變量按long或unsigned long類型輸出;L表示對應(yīng)的變量按long double類型輸出 |
在格式串中字段寬度和精度二者都可以用*來指定,此時(shí)該值可通過轉(zhuǎn)換對應(yīng)的變量來獲得,這些變量必須是int類型。
?
1.2.2 printf
?
#include <stdio.h> int printf(const char *format, …);printf(...)等價(jià)于fprintf(stdout, ...)。
?
1.2.3 sprintf
?
#include <stdio.h> int sprintf(char *buf, const char *format, …); 返回:實(shí)際寫到字符數(shù)組的字符數(shù),不包括'\0'與printf()基本相同,但輸出寫到字符數(shù)組buf而不是stdout中,并以'\0'結(jié)束。
注意,sprintf()不對buf進(jìn)行邊界檢查,buf必須足夠大,以便能裝下輸出結(jié)果。
?
1.2.4 snprintf
?
#include <stdio.h> int snprintf(char *buf, size_t num, const char *format, …);除了最多為num-1個(gè)字符被存放到buf指向的數(shù)組之外,snprintf()和sprintf()完全相同。數(shù)組以'\0'結(jié)束。
該函數(shù)不屬于C89(C99增加的),但應(yīng)用廣泛,所以將其包括了進(jìn)來。
?
1.2.5 vprintf
?
1.2.6 vfprintf
?
1.2.7 vsprintf
?
1.2.8 vsnprintf
?
#include <stdarg.h> #include <stdio.h> int vprintf(char *format, va_list arg); int vfprintf(FILE *stream, const char *format, va_list arg); int vsprintf(char *buf, const char *format, va_list arg); int vsnprintf(char *buf, size_t num, const char *format, va_list arg);這幾個(gè)函數(shù)與對應(yīng)的printf()等價(jià),但變量表由arg代替。參見第7節(jié)有關(guān)<stdarg.h>頭文件的討論。
vsnprintf是C99增加的。
?
1.3 格式化輸入
?
1.3.1 fscanf
?
#include <stdio.h> int fscanf(FILE *stream, const char *format, …); 返回:成功為實(shí)際被轉(zhuǎn)換并賦值的輸入項(xiàng)數(shù)目, 到達(dá)文件尾或變量被轉(zhuǎn)換前出錯(cuò)為EOF在格式串format的控制下從流stream中讀入字符,把轉(zhuǎn)換后的值賦給后續(xù)各個(gè)變量,在此每一個(gè)變量都必須是一個(gè)指針。當(dāng)格式串format結(jié)束時(shí)函數(shù)返回。
格式串format通常包含有用于指導(dǎo)輸入轉(zhuǎn)換的轉(zhuǎn)換規(guī)格說明。格式串中可以包含:
- 空格或制表符,他們將被忽略;
- 普通字符(%除外),與輸入流中下一個(gè)非空白字符相匹配;
- 轉(zhuǎn)換規(guī)格說明:由一個(gè)%、一個(gè)賦值屏蔽字符*(可選)、一個(gè)用于指定最大字段寬度的數(shù)(可選)、一個(gè)用于指定目標(biāo)字段的字符h/l/L(可選)、一個(gè)轉(zhuǎn)換字符組成。
轉(zhuǎn)換規(guī)格說明決定了輸入字段的轉(zhuǎn)換方式。通常把結(jié)果保存在由對應(yīng)變量指向的變量中。然而,如果轉(zhuǎn)換規(guī)格說明中包含有賦值屏蔽字符*,例如%*s,那么就跳過對應(yīng)的輸入字段,不進(jìn)行賦值。輸入字段是一個(gè)由非空白符組成的字符串,當(dāng)遇到空白符或到達(dá)最大字段寬(如果有的話)時(shí),對輸入字段的讀入結(jié)束。這意味著scanf函數(shù)可以跨越行的界限來讀入其輸入,因?yàn)閾Q行符也是空白符(空白符包括空格、橫向制表符、縱向制表符、換行符、回車符和換頁符)。
轉(zhuǎn)換字符列表如下:
| 字符 | 輸入數(shù)據(jù);變量類型 |
| d | 十進(jìn)制整數(shù);int * |
| i | 整數(shù);int *。該整數(shù)可以是以0開頭的八進(jìn)制數(shù),也可以是以0x/0X開頭的十六進(jìn)制數(shù) |
| o | 八進(jìn)制數(shù)(可以帶或不帶前導(dǎo)0);unsigned int * |
| u | 無符號十進(jìn)制整數(shù);unsigned int * |
| x | 十六進(jìn)制整數(shù)(可以帶或不帶前導(dǎo)0x/0X);unsigned int * |
| c | 字符;char *。按照字段寬的大小把讀入的字符保存在指定的數(shù)組中,不加入字符'\0'。字段寬的缺省值為1。在這種情況下,不跳過空白符;如果要讀入下一個(gè)非空白符,使用%1s(數(shù)字1) |
| s | 有非空白符組成的字符串(不包含引號);char *。該變量指針指向一個(gè)字符數(shù)組,該字符數(shù)組有足夠空間來保存該字符串以及在末尾添加的'\0' |
| e/f/g | 浮點(diǎn)數(shù);float *。float浮點(diǎn)數(shù)的輸入格式為:一個(gè)任選的正負(fù)號,一串可能包含小數(shù)點(diǎn)的數(shù)字和一個(gè)任選的指數(shù)字段。指數(shù)字段由字母e/E以及后跟的一個(gè)可能帶正負(fù)號的整數(shù)組成 |
| p | 用printf("%p")調(diào)用輸出的指針值;void * |
| n | 將到目前為止此調(diào)用所讀的字符數(shù)寫入變量;int *。不讀入輸入字符。不增加轉(zhuǎn)換項(xiàng)目計(jì)數(shù) |
| [...] | 用方括號括起來的字符集中的字符來匹配輸入,以找到最長的非空字符串;char *。在末尾添加'\0'。格式[]...]表示字符集中包含字符] |
| [^...] | 用不在方括號里的字符集中的字符來匹配輸入,以找到最長的非空字符串;char *。在末尾添加'\0'。格式[]...]表示字符集中包含字符] |
| % | 字面值%,不進(jìn)行賦值 |
字段類型字符:
- 如果變量是指向short類型而不是int類型的指針,那么在d/i/n/o/u/x這幾個(gè)轉(zhuǎn)換字符前可以加上字符h;
- 如果變量是指向long類型的指針,那么在d/i/n/o/u/x這幾個(gè)轉(zhuǎn)換字符前可以加上字符l;
- 如果變量是指向double類型而不是float類型的指針,那么在e/f/g這幾個(gè)轉(zhuǎn)換字符前可以加上字符l;
- 如果變量是指向long double類型的指針,那么在e/f/g前可以加上字符L。
?
1.3.2 scanf
#include <stdio.h> int scanf(const char *format, …);
scanf(...)等價(jià)于fscanf(stdin, ...)。
?
1.3.3 sscanf
?
#include <stdio.h> int sscanf(const char *buf, const char *format, …);與scanf()基本相同,但sscanf()從buf指向的數(shù)組中讀,而不是stdin。
?
1.4 字符輸入輸出函數(shù)
?
1.4.1 fgetc
?
#include <stdio.h> int fgetc(FILE *stream);以unsigned char類型返回輸入流stream中下一個(gè)字符(轉(zhuǎn)換為int類型)。如果到達(dá)文件末尾或發(fā)生錯(cuò)誤,則返回EOF。
?
1.4.2 fgets
?
#include <stdio.h> char *fgets(char *str, int num, FILE *stream); 返回:成功返回str,到達(dá)文件尾或發(fā)生錯(cuò)誤返回NULL從流stream中讀入最多num-1個(gè)字符到數(shù)組str中。當(dāng)遇到換行符時(shí),把換行符保留在str中,讀入不再進(jìn)行。數(shù)組str以'\0'結(jié)尾。
?
1.4.3 fputc
?
#include <stdio.h> int fputc(int ch, FILE *stream); 返回:成功為所寫的字符,出錯(cuò)為EOF把字符ch(轉(zhuǎn)換為unsigned char類型)輸出到流stream中。
?
1.4.4 fputs
?
#include <stdio.h> int fputs(const char *str, FILE *stream); 返回:成功返回非負(fù)值,失敗返回EOF把字符串str輸出到流stream中,不輸出終止符'\0'。
?
1.4.5 getc
?
#include <stdio.h> int getc(FILE *stream);getc()與fgetc()等價(jià)。不同之處為:當(dāng)getc函數(shù)被定義為宏時(shí),它可能多次計(jì)算stream的值。
?
1.4.6 getchar
?
#include <stdio.h> int getchar(void);等價(jià)于getc(stdin)。
?
1.4.7 gets
?
#include <stdio.h> char *gets(char *str); 返回:成功為str,到達(dá)文件尾或發(fā)生錯(cuò)誤則為NULL從stdin中讀入下一個(gè)字符串到數(shù)組str中,并把讀入的換行符替換為字符'\0'。
gets()可讀入無限多字節(jié),所以要保證str有足夠的空間,防止溢出。
?
1.4.8 putc
?
#include <stdio.h> int putc(int ch, FILE *stream);putc()與fputc()等價(jià)。不同之處為:當(dāng)putc函數(shù)被定義為宏時(shí),它可能多次計(jì)算stream的值。
?
1.4.9 putchar
?
#include <stdio.h> int putchar(int ch);等價(jià)于putc(ch, stdout)。
?
1.4.10 puts
?
#include <stdio.h> int puts(const char *str); 返回:成功返回非負(fù)值,出錯(cuò)返回EOF把字符串str和一個(gè)換行符輸出到stdout。
?
1.4.11 ungetc
?
#include <stdio.h> int ungetc(int ch, FILE *stream); 返回:成功時(shí)為ch,出錯(cuò)為EOF把字符ch(轉(zhuǎn)換為unsigned char類型)寫回到流stream中,下次對該流進(jìn)行讀操作時(shí),將返回該字符。對每個(gè)流只保證能寫回一個(gè)字符(有些實(shí)現(xiàn)支持回退多個(gè)字符),且此字符不能是EOF。
?
1.5 直接輸入輸出函數(shù)
?
1.5.1 fread
?
#include <stdio.h> size_t fread(void *buf, size_t size, size_t count, FILE *stream); 返回:實(shí)際讀入的對象數(shù)從流stream中讀入最多count個(gè)長度為size個(gè)字節(jié)的對象,放到buf指向的數(shù)組中。
返回值可能小于指定讀入數(shù),原因可能是出錯(cuò),也可能是到達(dá)文件尾。實(shí)際執(zhí)行狀態(tài)可用feof()或ferror()確定。
?
1.5.2 fwrite
?
#include <stdio.h> size_t fwrite(const void *buf, size_t size, size_t count, FILE *stream); 返回:實(shí)際輸出的對象數(shù)把buf指向的數(shù)組中count個(gè)長度為size的對象輸出到流stream中,并返回被輸出的對象數(shù)。如果發(fā)生錯(cuò)誤,則返回一個(gè)小于count的值。
?
1.6 文件定位函數(shù)
?
1.6.1 fseek
?
#include <stdio.h> int fseek(FILE *stream, long int offset, int origin); 返回:成功為0,出錯(cuò)為非0對流stream相關(guān)的文件定位,隨后的讀寫操作將從新位置開始。
對于二進(jìn)制文件,此位置被定位在由origin開始的offset個(gè)字符處。origin的值可能為SEEK_SET(文件開始處)、SEEK_CUR(當(dāng)前位置)或SEEK_END(文件結(jié)束處)。
對于文本流,offset心須為0,或者是由函數(shù)ftell()返回的值(此時(shí)origin的值必須是SEEK_SET)。
?
1.6.2 ftell
?
#include <stdio.h> long int ftell(FILE *stream);返回與流stream相關(guān)的文件的當(dāng)前位置。出錯(cuò)時(shí)返回-1L。
?
1.6.3 rewind
?
#include <stdio.h> void rewind(FILE *stream);rewind(fp)等價(jià)于fssek(fp, 0L, SEEK_SET)與clearerr(fp)這兩個(gè)函數(shù)順序執(zhí)行的效果,即把與流stream相關(guān)的文件的當(dāng)前位置移到開始處,同時(shí)清除與該流相關(guān)的文件尾標(biāo)志和錯(cuò)誤標(biāo)志。
?
1.6.4 fgetpos
?
#include <stdio.h> int fgetpos(FILE *stream, fpos_t *position); 返回:成功返回0,失敗返回非0把流stream的當(dāng)前位置記錄在*position中,供隨后的fsetpos()調(diào)用時(shí)使用。
?
1.6.5 fsetpos
?
#include <stdio.h> int fsetpos(FILE *stream, const fpos_t *position); 返回:成功返回0,失敗返回非0把流stream的位置定位到*position中記錄的位置。*position的值是之前調(diào)用fgetpos()記錄下來的。
?
1.7 錯(cuò)誤處理函數(shù)
?
當(dāng)發(fā)生錯(cuò)誤或到達(dá)文件末尾時(shí),標(biāo)準(zhǔn)庫中的許多函數(shù)將設(shè)置狀態(tài)指示符。這些狀態(tài)指示符可被顯式地設(shè)置和測試。另外,(定義在<errno.h>中的)整數(shù)表達(dá)式errno可包含一個(gè)出錯(cuò)序號,該數(shù)將進(jìn)一步給出最近一次出錯(cuò)的信息。
?
1.7.1 clearerr
?
#include <stdio.h> void clearerr(FILE *stream);清除與流stream相關(guān)的文件結(jié)束指示符和錯(cuò)誤指示符。
?
1.7.2 feof
?
#include <stdio.h> int feof(FILE *stream); 返回:到達(dá)文件尾時(shí)返回非0值,否則返回0與流stream相關(guān)的文件結(jié)束指示符被設(shè)置時(shí),函數(shù)返回一個(gè)非0值。
?
1.7.3 ferror
?
#include <stdio.h> int ferror(FILE *stream); 返回:無錯(cuò)返回0,有錯(cuò)返回非0與流stream相關(guān)的文件出錯(cuò)指示符被設(shè)置時(shí),函數(shù)返回一個(gè)非0值。
?
1.7.4 perror
?
#include <stdio.h> void perror(const char *str);perror(s)用于輸出字符串s以及與全局變量errno中的整數(shù)值相對應(yīng)的出錯(cuò)信息,具體出錯(cuò)信息的內(nèi)容依賴于實(shí)現(xiàn)。該函數(shù)的功能類似于:
fprintf(stderr, "%s: %s\n", s, "出錯(cuò)信息");可參見第3節(jié)介紹的strerror函數(shù)。
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的c语言输入与输出库函数#includestdio.h的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop-MapReduce 入门
- 下一篇: web.xml与index.html