版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、c 語言函數(shù)庫(kù)目錄第一章C標(biāo)準(zhǔn)庫(kù)4.1. 診斷4.2. : 字符類別測(cè)試 5.3. verrno.h:錯(cuò)誤處理5.4. :整型常量6.5. :地域環(huán)境6.6. :數(shù)學(xué)函數(shù)7.7. :非局部跳轉(zhuǎn)8.8. :信號(hào)9.9. :可變參數(shù)表1.110. :公共定義 .1.111. :輸入輸出 1212. :實(shí)用函數(shù)1.313. :日期與時(shí)間函數(shù)1.3第二章 IO 函數(shù) 1.4.clearerr: 復(fù)位錯(cuò)誤標(biāo)志函數(shù) 15feof:檢測(cè)文件結(jié)束符函數(shù) 16ferror: 檢測(cè)流上的錯(cuò)誤函數(shù) 17fflush:去除文件緩沖區(qū)函數(shù) 1.8fgetc:從流中讀取字符函數(shù) 19fgetpos:取得當(dāng)前文件的句柄函數(shù)
2、 20fgets:從流中讀取字符串函數(shù) 21fopen、fclose:文件的翻開與關(guān)閉函數(shù) 22fprintf:格式化輸出函數(shù) 23fputc:向流中輸出字符函數(shù) 25fputs:向流中輸出字符串函數(shù)25fread :從流中讀取字符串函數(shù) 26freope n:替換文件中數(shù)據(jù)流函數(shù) 27fscanf:格式化輸入函數(shù) 28fseek:文件指針定位函數(shù) 29fsetpos:定位流上的文件指針函數(shù) 30ftell:返回當(dāng)前文件指針位置函數(shù) 31fwrite :向文件寫入數(shù)據(jù)函數(shù) 31getc:從流中讀取字符函數(shù) 32getcha:從標(biāo)準(zhǔn)輸入文件中讀取字符函數(shù) 33gets:從標(biāo)準(zhǔn)輸入文件中讀取字符串
3、函數(shù) .34perror 打印系統(tǒng)錯(cuò)誤信息函數(shù) 3.5printf 產(chǎn)生格式化輸出的函數(shù) 3.5putc 向指定流中輸出字符函數(shù) 3.6putchar 向標(biāo)準(zhǔn)輸出文件上輸出字符 3.7puts:將字符串輸出到終端函數(shù) 37remove: 刪除文件函數(shù) 38rename重命名文件函數(shù) 39rewind:重置文件指針函數(shù) 39sea nf:格式化輸入函數(shù) 40setbuf setvbuf:指定文件流的緩沖區(qū)函數(shù) 41spri ntf :向字符串寫入格式化數(shù)據(jù)函數(shù) 42ssca n:從緩沖區(qū)中讀格式化字符串函數(shù) 43tmpfile :創(chuàng)立臨時(shí)文件函數(shù) 44tmpnam:創(chuàng)立臨時(shí)文件名函數(shù) 44ung
4、etc:把字符退回至U輸入流函數(shù) 45第三章字符處理函數(shù) 4.7isalnum:檢查字符是否是字母或數(shù)字 47isalpha:檢查字符是否是字母 48isascii:檢查字符是否是 ASCII碼49iscntrl:檢查字符是否是控制字符49isdigit :檢查字符是否是數(shù)字字符50isgraph:檢查字符是否是可打印字符不含空格 51islower :檢查字符是否是小寫字母 51ispri nt:檢查字符是否是可打印字符含空格 52ispunct:檢查字符是否是標(biāo)點(diǎn)字符 .5.3isspace檢查字符是否是空格符 53isupper:檢查字符是否是大寫字母 54isxdigit:檢查字符是否
5、是十六進(jìn)制數(shù)字字符 55toascii:將字符轉(zhuǎn)換為ASCII碼55tolower: 將大寫字母轉(zhuǎn)換為小寫字母 .5.6toupper:將小寫字母轉(zhuǎn)換為大寫字母 57第四章字符串函數(shù)57atof:字符串轉(zhuǎn)浮點(diǎn)型函數(shù) 58atoi:字符串轉(zhuǎn)整型函數(shù)59atol:字符串轉(zhuǎn)長(zhǎng)整型函數(shù)60memchr:字符搜索函數(shù) 60memcmp:字符串比擬函數(shù)61memcpy: 字符串拷貝函數(shù) 62memmove: 字塊移動(dòng)函數(shù)63memset字符加載函數(shù) 64strcat:字符串連接函數(shù)65strchr:字符串中字符首次匹配函數(shù) 66strcmp:字符串比擬函數(shù) 67strcpy:字符串拷貝函數(shù) 68strcs
6、pn:字符集逆匹配函數(shù) 69strdup:字符串新建拷貝函數(shù) 70strerror:字符串錯(cuò)誤信息函數(shù) 71strlen:計(jì)算字符串長(zhǎng)度函數(shù)72strlwr:字符串小寫轉(zhuǎn)換函數(shù) 72strncat:字符串連接函數(shù)73strncmp: 字符串子串比擬函數(shù) 74strncpy: 字符串子串拷貝函數(shù) 75strpbrk:字符集字符匹配函數(shù) 76strrchr:字符串中字符末次匹配函數(shù) 77strre v: 字符串倒轉(zhuǎn)函數(shù) 78strset: 字符串設(shè)定函數(shù) 79strspn:字符集匹配函數(shù) 79strstr:字符串匹配函數(shù)80strtod :字符串轉(zhuǎn)換成雙精度函數(shù) 81strtok:字符串分隔函數(shù)
7、82strtol :字符串轉(zhuǎn)換成長(zhǎng)整型函數(shù) 83strtoul :字符串轉(zhuǎn)換成無符號(hào)長(zhǎng)整型函數(shù) 85strupr:字符串大寫轉(zhuǎn)換函數(shù) 86strupr:字符串大寫轉(zhuǎn)換函數(shù) 86第五章數(shù)學(xué)函數(shù) 8.7abs labs、fabs: 求絕對(duì)值函數(shù) 88acos: 反余弦函數(shù) 8.9.asin: 反正弦函數(shù) 8.9.atan:反正切函數(shù)90atan2:反正切函數(shù)290ceil:向上舍入函數(shù)91cos :余弦函數(shù) 9.1.cosh: 雙曲余弦函數(shù) 9.2.div、Idiv :除法函數(shù) 92exp:求e的x次幕函數(shù)93floor:向下舍入函數(shù)94fmod :求模函數(shù)95frexp :分解浮點(diǎn)數(shù)函數(shù) 95h
8、ypot:求直角三角形斜邊長(zhǎng)函數(shù) 96ldexp :裝載浮點(diǎn)數(shù)函數(shù) 96log、log10:對(duì)數(shù)函數(shù).9.7modf :分解雙精度數(shù)函數(shù).9.8pow、pow10:指數(shù)函數(shù)98rand:產(chǎn)生隨機(jī)整數(shù)函數(shù) 99sin:正弦函數(shù)99sinh: 雙曲正弦函數(shù) 1.0.0sqrt:開平方函數(shù)100srand:設(shè)置隨機(jī)時(shí)間的種子函數(shù) 101tan: 正切函數(shù) 1.0. 2tanh: 雙曲正切函數(shù) 1.02第六章時(shí)間和日期函數(shù) 1.03asctime:日期和時(shí)間轉(zhuǎn)換函數(shù) 103clock: 測(cè)定運(yùn)行時(shí)間函數(shù) .104ctime:時(shí)間轉(zhuǎn)換函數(shù)1.05difftime :計(jì)算時(shí)間差函數(shù).105gmtime:
9、將日歷時(shí)間轉(zhuǎn)換為GMT106localtime:把日期和時(shí)間轉(zhuǎn)變?yōu)榻Y(jié)構(gòu) 1.07mktime :時(shí)間類型轉(zhuǎn)換函數(shù) 107time :獲取系統(tǒng)時(shí)間函數(shù) 109第七章其它函數(shù) 1.09abort :異常終止進(jìn)程函數(shù) 110atexit: 注冊(cè)終止函數(shù) 11 0bsearch 二分搜索函數(shù) 111calloc:分配主存儲(chǔ)器函數(shù) 1.13exit :正常終止進(jìn)程函數(shù) 1.14free:釋放內(nèi)存函數(shù) 11 4getenv: 獲取環(huán)境變量 1.15malloc:動(dòng)態(tài)分配內(nèi)存函數(shù) 116qsort: 快速排序函數(shù) 116realloc:重新分配主存函數(shù) 1.18第一章 C 標(biāo)準(zhǔn)庫(kù)1. :診斷2. :字符類別
10、測(cè)試3. :錯(cuò)誤處理4. :整型常量5. :地域環(huán)境6. :數(shù)學(xué)函數(shù)7. :非局部跳轉(zhuǎn)8. :信號(hào)9. :可變參數(shù)表10. :公共定義11. :輸入輸出12. :實(shí)用函數(shù)13. :日期與時(shí)間函數(shù)1. :診斷vassert.h中只定義了一個(gè)帶參的宏assert,其定義形式如下: void assert (int 表達(dá)式 )assert 宏用于為程序增加診斷功能,它可以測(cè)試一個(gè)條件并可能使程序終止。在執(zhí)行語 句:assert(表達(dá)式);時(shí),如果表達(dá)式為 0,那么在終端顯示一條信息:Assertion failed: 0, file 源文件名 , line 行號(hào)Abnormal program te
11、rmination然后調(diào)用 abort 終止程序的執(zhí)行。在assert.h中,帶參宏 assert是被定義為條件編譯的,如果在源文件中定義了宏NDEBUG那么即使包含了頭文件 assert.h,assert宏也將被忽略。2. ctype.h :字符類別測(cè)試在頭文件ctype.h中定義了一些測(cè)試字符的函數(shù)。 在這些函數(shù)中,每個(gè)函數(shù)的參數(shù)都是 整型int,而每個(gè)參數(shù)的值或者為 EOF,或者為char類型的字符。ctype.h中定義的標(biāo)準(zhǔn)函 數(shù)列表如下:ctype.h中定義的函數(shù) 函數(shù)定義 , 函數(shù)功能簡(jiǎn)介 int isalnum(int c), 檢查字符是否是字母或數(shù)字 int isalpha(i
12、nt c), 檢查字符是否是字母 int isascii(int c),檢查字符是否是 ASCII碼 int iscntrl(int c), 檢查字符是否是控制字符 int isdigit(int c), 檢查字符是否是數(shù)字字符 int isgraph(int c), 檢查字符是否是可打印字符 int islower(int c), 檢查字符是否是小寫字母 int isprint(int c), 檢查字符是否是可打印字符 int ispunct(int c), 檢查字符是否是標(biāo)點(diǎn)字符 int isspace(int c), 檢查字符是否是空格符 int isupper(int c), 檢查字符
13、是否是大寫字母 int isxdigit(int c), 檢查字符是否是十六進(jìn)制數(shù)字字符 int toupper(int c), 將小寫字母轉(zhuǎn)換為大寫字母 int tolower(int c), 將大寫字母轉(zhuǎn)換為小寫字母有關(guān)ctype.h中定義的這些標(biāo)準(zhǔn)函數(shù)以及一些常用的非標(biāo)準(zhǔn)字符處理函數(shù)將在第十 章中進(jìn)行詳細(xì)地介紹。3. errno.h :錯(cuò)誤處理errno.h中定義了兩個(gè)常量,一個(gè)變量。1、EDOM 它表示數(shù)學(xué)領(lǐng)域錯(cuò)誤的錯(cuò)誤代碼。2、ERANGE 它表示結(jié)果超出范圍的錯(cuò)誤代碼。3、errno這是一個(gè)變量,該值被設(shè)置成用來指出系統(tǒng)調(diào)用的錯(cuò)誤類型。4. :整型常量在頭文件 中定義了一些表示整型
14、大小的常量。 下面給出這些常量的字符表示以 及含義,見下表。 中定義的字符常量字符常量 , 取值 , 含義CHAR_BIT, 8, cha類型的位數(shù)CHAR_MAX, 255或 127, char 類型最大值CHAR_MIN, 0或-127, char 類型最小值INT_MIN, -32767, int 類型最小值INT_MAX , 32767, int 類型最大值LONG_MAX, 2147483647, long 類型最大值LONG_MIN, -2147483647, long 類型最小值SCHAR_MAX, 127, signed char 類型最大值SCHAR_MIN, -127, s
15、igned char 類型最小值SHRT_MAX, 32767, short 類型的最大值SHRT_MIN, -32767, short 類型的最小值UCHAR_MAX, 255, unsigned char 類型最大值UINT_MAX, 65535, unsigned int 類型最大值ULONG_MAX, 4294967295, unsigned long 類型最大值USHRT_MAX, 65535, unsigned short 類型的最大值5. :地域環(huán)境在vlocale.h中,定義了 7個(gè)常量,一個(gè)結(jié)構(gòu),2個(gè)函數(shù)。1、常量的定義LC_ALL傳遞給setlocale的第一個(gè)參數(shù),指定要
16、更改該locale的哪個(gè)方面。LC_COLLATEstrcoll 和 strxfrm 的行為。LC_CTYPE 字符處理函數(shù)。LC_MONETARY:localeconv 返回的貨幣信息。LC_NUMERIC:localeconv 返回的小數(shù)點(diǎn)和貨幣信息。LC_TIME:strftime 的行為。以上擴(kuò)展成具有唯一取值的整型常數(shù)表達(dá)式,可作為 setlocale 的第一個(gè)參數(shù)。NULL:由實(shí)現(xiàn)環(huán)境定義的空指針。2、struct lconv 結(jié)構(gòu) 該結(jié)構(gòu)用于存儲(chǔ)和表示當(dāng)前 locale 的設(shè)置。其結(jié)構(gòu)定義如下: struct lconvchar *decimal_point;char *thou
17、sands_sep;char *grouping;char *int_curr_symbol;char *currency_symbol;char *mon_decimal_point;char *mon_thousands_sep;char *mon_grouping;char *positive_sign;char *negative_sign;char int_frac_digits;char frac_digits;char p_cs_precedes;char p_sep_by_space;char n_cs_precedes;char n_sep_by_space;char p_s
18、ign_posn;char n_sign_posn;3、函數(shù)struct Iconv *localeconv(void);函數(shù) localeconv 將一個(gè) struct Iconv 類型的對(duì)象的數(shù)據(jù)成員設(shè)置成為按照當(dāng)前地域環(huán)境的 有關(guān)規(guī)那么進(jìn)行數(shù)量格式化后的相應(yīng)值。char *setlocale(int category,char * locale);函數(shù) setlocale 用于更改和查詢程序的整個(gè)當(dāng)前地域環(huán)境或局部設(shè)置。地域環(huán)境變量由 參數(shù) category( 上面定義的 6 個(gè)常量 )和 locale 指定。6. :數(shù)學(xué)函數(shù)在中定義了一些數(shù)學(xué)函數(shù)和宏,用來實(shí)現(xiàn)不同種類的數(shù)學(xué)運(yùn)算。下面給
19、出 中標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)的函數(shù)定義及功能簡(jiǎn)介,見下表。中定義的函數(shù)函數(shù)定義 , 函數(shù)功能簡(jiǎn)介double exp(double x);, 指數(shù)運(yùn)算函數(shù) , 求 e 的 x 次冪函數(shù)double log(double x), 對(duì)數(shù)函數(shù) ln(x)double log10(double x); , 對(duì)數(shù)函數(shù) logdouble pow(double x, double y);, 指數(shù)函數(shù)(x 的 y 次方)double sqrt(double x); , 計(jì)算平方根函數(shù)double ceil(double x); , 向上舍入函數(shù)double floor(double x);, 向下舍入函數(shù) doubl
20、e fabs(double x);, 求浮點(diǎn)數(shù)的絕對(duì)值 double ldexp(double x, int n); , 裝載浮點(diǎn)數(shù)函數(shù) double frexp(double x, int* exp); , 分解浮點(diǎn)數(shù)函數(shù) double modf(double x, double* ip); , 分解雙精度數(shù)函數(shù) double fmod(double x, double y);, 求模函數(shù) double sin(double x); , 計(jì)算 x 的正弦值函數(shù) double cos(double x);, 計(jì)算 x 的余弦值函數(shù) double tan(double x);, 計(jì)算 x 的正切
21、值函數(shù) double asin(double x);, 計(jì)算 x 的反正弦函數(shù) double acos(double x); , 計(jì)算 x 的反余弦函數(shù) double atan(double x); , 反正切函數(shù) 1 double atan2(double y, double x); , 反正切函數(shù) 2 double sinh(double x); , 計(jì)算 x 的雙曲正弦值 double cosh(double x); , 計(jì)算 x 的雙曲余弦值 double tanh(double x); , 計(jì)算 x 的雙曲正切值在標(biāo)準(zhǔn)庫(kù)中,還有一些與數(shù)學(xué)計(jì)算有關(guān)的函數(shù)定義在其他頭文件中。7. :非局
22、部跳轉(zhuǎn)在頭文件 中定義了一種特別的函數(shù)調(diào)用和函數(shù)返回順序的方式。這種方式不 同于以往的函數(shù)調(diào)用和返回順序,它允許程序流程立即從一個(gè)深層嵌套的函數(shù)中返回。 中定義了兩個(gè)宏: int setjmp(jmp_buf env); /* 設(shè)置調(diào)轉(zhuǎn)點(diǎn) */和 longjmp(jmp_buf jmpb, int retval);/* 跳轉(zhuǎn) */宏 setjmp 的功能是將當(dāng)前程序的狀態(tài)保存在結(jié)構(gòu) env ,為調(diào)用宏 longjmp 設(shè)置一個(gè)跳 轉(zhuǎn)點(diǎn)。 setjmp 將當(dāng)前信息保存在 env 中供 longjmp 使用。其中 env 是 jmp_buf 結(jié)構(gòu)類型的, 該結(jié)構(gòu)定義為: typedef struc
23、t unsigned j_sp;unsigned j_ss;unsigned j_flag;unsigned j_cs; unsigned j_ip;unsigned j_bp;unsigned j_di;unsigned j_es;unsigned j_si;unsigned j_ds; jmp_buf1;直接調(diào)用 setjmp 時(shí),返回值為 0,這一般用于初始化設(shè)置跳轉(zhuǎn)點(diǎn)時(shí) 。以后再調(diào)用 longjmp 宏時(shí)用 env 變量進(jìn)行跳轉(zhuǎn)。 程序會(huì)自動(dòng)跳轉(zhuǎn)到 setjmp 宏的返回語句處, 此時(shí) setjmp 的返回值為非 0,由 longjmp 的第二個(gè)參數(shù)指定。下面通過例子來理解 中定義的這
24、兩個(gè)宏。例程 9-1 非局部跳轉(zhuǎn)演示。#include jmp_buf env; /* 定義 jmp_buf 類型變量 */int main(void)int value;value = setjmp(env); /* 調(diào)用 setjmp ,為 longjmp 設(shè)置跳轉(zhuǎn)點(diǎn) */if (value != 0)printf(Longjmp with value %dn, value);exit(value); /* 退出程序 */printf(Jump . n);longjmp(env,1); /* 跳轉(zhuǎn)到 setjmp 語句處 */return 0;本例程先應(yīng)用 setjmp 宏為 longjm
25、p 設(shè)置跳轉(zhuǎn)點(diǎn),當(dāng)?shù)谝淮握{(diào)用 setjmp 時(shí)返回值為 0, 并將程序的當(dāng)前狀態(tài)存放器的相關(guān)狀態(tài)保存在結(jié)構(gòu)變量 env 中。當(dāng)程序執(zhí)行到 longjmp 時(shí),系統(tǒng)會(huì)根據(jù) setjmp 保存下來的狀態(tài) env 跳轉(zhuǎn)到 setjmp 語句處,并根據(jù) longjmp 的第二 個(gè)參數(shù)設(shè)置此時(shí) setjmp 的返回值。本例程的運(yùn)行結(jié)果為:Jump .Longjmp with value 1一般地,宏 setjmp 和 longjmp 是成對(duì)使用的,這樣程序流程可以從一個(gè)深層嵌套的函 數(shù)中返回。8. :信號(hào)頭文件中提供了一些處理程序運(yùn)行期間引發(fā)的各種異常條件的功能,例如一 些來自外部的中斷信號(hào)等。在中只定
26、義了兩個(gè)函數(shù):int signal(int sig, sigfun fname);和int raise(int sig);signal 函數(shù)的作用是設(shè)置某一信號(hào)的對(duì)應(yīng)動(dòng)作。其中參數(shù) sig 用來指定哪一個(gè)信號(hào)被設(shè) 置處理函數(shù)。在標(biāo)準(zhǔn) C 中支持的信號(hào)如下表。標(biāo)準(zhǔn)C支持的信號(hào)取值 , 說明, 默認(rèn)執(zhí)行動(dòng)作 , 使用的操作系統(tǒng)SIGABRT,異常中止,中止程序,UNIX DOSSIGPPE,算術(shù)運(yùn)算錯(cuò)誤,中止程序,UNIX DOSSIGILL, 非法硬件指令 , 中止程序 , UNIX DOS SIGINT, 終端中斷 , 中止程序 , UNIX DOSSIGSEGV,無效的內(nèi)存訪問,中止程序,U
27、NIX DOSSIGTERM, 中止信號(hào) , 中止程序 , UNIX DOS參數(shù)fname是一個(gè)指向函數(shù)的指針,當(dāng)sig的信號(hào)發(fā)生時(shí)程序會(huì)自動(dòng)中斷轉(zhuǎn)而執(zhí)行fname指向的函數(shù)。 執(zhí)行完畢再返回?cái)帱c(diǎn)繼續(xù)執(zhí)行程序。 系統(tǒng)提供了兩個(gè)常量函數(shù)指針, 可以作為 函數(shù)的參數(shù)傳遞。它們分別是:SIG_DEF執(zhí)行默認(rèn)的系統(tǒng)第一的函數(shù)。SIG_IGN忽略此信號(hào)。raise 函數(shù)的作用是向正在執(zhí)行的程序發(fā)送一個(gè)信號(hào),從而使得當(dāng)前進(jìn)程產(chǎn)生一個(gè)中斷而轉(zhuǎn)向信號(hào)處理函數(shù)signal執(zhí)行。其中參數(shù)sig為信號(hào)名稱,它的取值范圍同函數(shù)signal中的參數(shù)sig取值范圍相同,見表9-6。下面通過例子理解函數(shù) signal 和
28、raise。例程 9-2 signall 和 raise 函數(shù)演示#include #include void Print1();void Print2();int main() signal(SIGINT,Print1);printf(Please enter Ctr+c for interuptn) ; getchar();signal(SIGSEGV,Print2);printf(Please enter any key for a interuptn); getchar();raise(SIGSEGV);void Print1()printf(This is a SIGINT inte
29、rupt!n);void Print2()printf(This is a SIGSEGV interupt!n);本例程首先通過用戶終端輸入 Ctrl+c產(chǎn)生一個(gè)終端中斷,然后應(yīng)用signal函數(shù)調(diào)用中斷 處理函數(shù)Print1 ;再通過raise函數(shù)生成一個(gè)無效內(nèi)存訪問中斷,并通過signal函數(shù)調(diào)用中斷處理函數(shù) Print2。本例程的運(yùn)行結(jié)果為:Please enter Ctr+c for interuptACThis is a SIGINT interupt!Please enter any key for a interupt aThis is a SIGSEGV interupt!9
30、. stdarg.h :可變參數(shù)表可變參數(shù)表stdarg.h中的宏是用來定義參數(shù)可變的函數(shù)的。在C語言中,有些庫(kù)函數(shù)或者用戶自定義的函數(shù)的參數(shù)是可變的,常用省略號(hào)“例如庫(kù)函數(shù)中的printf,定義這樣的函數(shù)就要使用到stdarg.h中的宏。1、va_list用于保存宏 va_start, va_arg 以及 va_end 所需信息的數(shù)據(jù)類型。2、stdarg.h中還定義了三個(gè)宏void va_start(va_list ap, parmN);type va_arg(va_list ap,type);void va_end (va_list ap);va_start的作用是初始化ap,因此va_
31、start要在所有其它的va_開頭的宏前面最先使用(除 了用va_list定義變量外),后面的va_copy, va_arg, va_end都要使用到 ap。在一對(duì)va_start和 va_end 之間不能再次使用 va_start 宏。其中, parmN 為. 之前的最后一個(gè)參數(shù)。 例如 , printf 函數(shù)定義為: printf(const char *format, .); 那么在 printf 函數(shù)中的 va_start 使用之后 , parmN 的值就等于 *format 。va_arg 的作用就是返回參數(shù)列表 ap 中的下一個(gè)具有 type 類型的參數(shù) , 每次調(diào)用 va_arg
32、 都會(huì)修改 ap 的值 , 這樣才能連續(xù)不斷地獲取下一個(gè) type 類型的參數(shù)。va_end 與 va_start 構(gòu)成了一個(gè) scope, va_end 標(biāo)志著結(jié)束, va_end 之后 ap 就無效了。10. :公共定義在頭文件seddef.h中,指定了標(biāo)準(zhǔn)庫(kù)中的公共定義。其中主要包括以下內(nèi)容:1、 NULL 空指針類型常量。2、offset(type,member-designator)它是擴(kuò)展 iz-t 類型的一個(gè)整型常數(shù)表達(dá)式。它的值為從 type 定義的結(jié)構(gòu)類型的開頭到 結(jié)構(gòu)成員 member-designator 的偏移字節(jié)數(shù)。3、ptrdiff_t表示兩指針之差的帶符號(hào)整數(shù)類型
33、。4、size_t表示由sizeof運(yùn)算符計(jì)算出的結(jié)果類型,它是一個(gè)無符號(hào)整數(shù)類型。5、wchar_t它是一種整數(shù)類型, 取值范圍為在被支持的地域環(huán)境中最大擴(kuò)展字符集的所有字符的各 種代碼,空字符代碼值為 0。11. stdio.h :輸入輸出在頭文件stdio.h中定義了輸入輸出函數(shù),類型和宏。這些函數(shù)、類型和宏幾乎占到標(biāo) 準(zhǔn)庫(kù)的三分之一。下面給出頭文件stdio.h中聲明的函數(shù)以及功能簡(jiǎn)介,見下表。stdio.h中聲明的函數(shù)函數(shù)定義 , 函數(shù)功能簡(jiǎn)介FILE *fopen(char *filename, char *type), 翻開一個(gè)文件FILE *fropen(char *filen
34、ame, char *type,FILE *fp), 翻開一個(gè)文件,并將該文件關(guān)聯(lián)到 fp 指定的流int fflush(FILE *stream), 去除一個(gè)流int fclose(FILE *stream), 關(guān)閉一個(gè)文件int remove(char *filename), 刪除一個(gè)文件int rename(char *oldname, char *newname), 重命名文件FILE *tmpfile(void), 以二進(jìn)制方式翻開暫存文件char *tmpnam(char *sptr), 創(chuàng)立一個(gè)唯一的文件名int setvbuf(FILE *stream, char *buf,
35、int type, unsigned size), 把緩沖區(qū)與流相關(guān)int printf(char *format.),產(chǎn)生格式化輸出的函數(shù)int fprintf(FILE *stream, char *format, argument,.),傳送格式化輸出到一個(gè)流中int scanf(char *format,argument,.), 執(zhí)行格式化輸入int fscanf(FILE *stream, char *format,argument.),從一個(gè)流中執(zhí)行格式化輸入int fgetc(FILE *stream), 從流中讀取字符char *fgets(char *string, int
36、n, FILE *stream), 從流中讀取一字符串int fputc(int ch, FILE *stream), 送一個(gè)字符到一個(gè)流中int fputs(char *string, FILE *stream), 送一個(gè)字符到一個(gè)流中int getc(FILE *stream), 從流中取字符int getchar(void), 從 stdin 流中讀字符char *gets(char *string), 從流中取一字符串int putchar(int ch), 在 stdout 上輸出字符int puts(char *string), 送一字符串到流中int ungetc(char c,
37、 FILE *stream), 把一個(gè)字符退回到輸入流中int fread(void *ptr, int size, int nitems, FILE *stream), 從一個(gè)流中讀數(shù)據(jù)int fwrite(void *ptr, int size, int nitems, FILE *stream), 寫內(nèi)容到流中int fseek(FILE *stream, long offset, int fromwhere), 重定位流上的文件指針long ftell(FILE *stream), 返回當(dāng)前文件指針int rewind(FILE *stream), 將文件指針重新指向一個(gè)流的開頭int
38、 fgetpos(FILE *stream), 取得當(dāng)前文件的句柄int fsetpos(FILE *stream, const fpos_t *pos), 定位流上的文件指針void clearerr(FILE *stream), 復(fù)位錯(cuò)誤標(biāo)志int feof(FILE *stream), 檢測(cè)流上的文件結(jié)束符int ferror(FILE *stream), 檢測(cè)流上的錯(cuò)誤void perror(char *string), 系統(tǒng)錯(cuò)誤信息在頭文件stdio.h中還定義了一些類型和宏。12. :實(shí)用函數(shù)在頭文件 中聲明了一些實(shí)現(xiàn)數(shù)值轉(zhuǎn)換, 內(nèi)存分配等類似功能的函數(shù)。 下面給出 頭文件 中聲明
39、的函數(shù)以及功能簡(jiǎn)介,見下表。中聲明的函數(shù)函數(shù)定義 , 函數(shù)功能簡(jiǎn)介double atof(const char *s), 將字符串 s 轉(zhuǎn)換為 double 類型int atoi(const char *s) , 將字符串 s 轉(zhuǎn)換為 int 類型long atol(const char *s), 將字符串 s 轉(zhuǎn)換為 long 類型double strtod (const char*s,char *endp),將字符串 s前綴轉(zhuǎn)換為 double 型long strtol(const char*s,char *endp,int base),將字符串 s 前綴轉(zhuǎn)換為 long 型unsinge
40、d long strtol(const char*s,char *endp,int base),將字符串 s 前綴轉(zhuǎn)換為 unsinged long型int rand(void),產(chǎn)生一個(gè)0RAND_MAX之間的偽隨機(jī)數(shù)void srand(unsigned int seed) , 初始化隨機(jī)數(shù)發(fā)生器void *calloc(size_t nelem, size_t elsize), 分配主存儲(chǔ)器void *malloc(unsigned size), 內(nèi)存分配函數(shù)void *realloc(void *ptr, unsigned newsize), 重新分配主存void free(void
41、*ptr), 釋放已分配的塊void abort(void), 異常終止一個(gè)進(jìn)程void exit(int status), 終止應(yīng)用程序int atexit(atexit_t func), 注冊(cè)終止函數(shù)char *getenv(char *envvar), 從環(huán)境中取字符串void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *), 二分法搜索函數(shù)void qsort(void *base, int nelem, int widt
42、h, int (*fcmp)(), 使用快速排序例程進(jìn)行排序int abs(int i), 求整數(shù)的絕對(duì)值long labs(long n), 取長(zhǎng)整型絕對(duì)值div_t div(int number, int denom), 將兩個(gè)整數(shù)相除 , 返回商和余數(shù) ldiv_t ldiv(long lnumer, long ldenom), 兩個(gè)長(zhǎng)整型數(shù)相除 , 返回商和余數(shù)有關(guān)上面列出的這些標(biāo)準(zhǔn)實(shí)用函數(shù)的功能、用法、例程等。13. :日期與時(shí)間函數(shù)在頭文件中,聲明了一些處理日期和時(shí)間的類型與函數(shù)。clock_t和time_t是兩個(gè)表示時(shí)間值的算術(shù)類型。 結(jié)構(gòu)struct tm存儲(chǔ)了一個(gè)日歷時(shí)間的各
43、個(gè)成分。 結(jié)構(gòu)tm的成員 的意義及其正常的取值范圍如下:struct tm int tm_sec; /* 從當(dāng)前分鐘開始經(jīng)過的秒數(shù) (0,61)*/inttm_min;/* 從當(dāng)前小時(shí)開始經(jīng)過的分鐘數(shù)(0,59)*/inttm_hour;/* 從午夜開始經(jīng)過的小時(shí)數(shù) (0,23)*/inttm_mday;/* 當(dāng)月的天數(shù) (1,31)*/inttm_mon;/* 從 1 月起經(jīng)過的月數(shù) (0,11)*/inttm_year;/* 從 1900 年起經(jīng)過的年數(shù) */int tm_wday;/* 從本周星期天開始經(jīng)過的天數(shù) (0,6)*/int tm_yday;/* 從今年 1 月 1 日起經(jīng)過的
44、天數(shù) (0,356)*/int tm_isdst; /* 夏令時(shí)標(biāo)記 */;如果夏令時(shí)有效,夏令時(shí)標(biāo)記 tm_isdst 值為正;假設(shè)夏令時(shí)無效, tm_isdst 值為 0;如 果得不到夏令時(shí)信息, tm_isdst 值為負(fù)。下面給出頭文件 中聲明的時(shí)間函數(shù),見下表。 中聲明的時(shí)間函數(shù)函數(shù)定義 , 函數(shù)功能簡(jiǎn)介clock_t clock(void), 確定處理器時(shí)間函數(shù)time_t time(time_t *tp), 返回當(dāng)前日歷時(shí)間double difftime(time_t time2, time_t time1), 計(jì)算兩個(gè)時(shí)刻之間的時(shí)間差 time_t mktime(struct t
45、m *tp), 將分段時(shí)間值轉(zhuǎn)換為日歷時(shí)間值char *asctime(co nst struct tm *tblock),轉(zhuǎn)換日期和時(shí)間為 ASCII 碼char *ctime(const time_t *time), 把日期和時(shí)間轉(zhuǎn)換為字符串struct tm *gmtime(const time_t *timer), 把日期和時(shí)間轉(zhuǎn)換為格林尼治標(biāo)準(zhǔn)時(shí)間 (GMT) struct tm *localtime(const time_t *timer), 把日期和時(shí)間轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)size_t strftime(char *s,size_t smax,const char *fmt, const
46、struct tm *tp) , 根據(jù) fmt 的格式 要求將 *tp 中的日期與時(shí)間轉(zhuǎn)換為指定格式。第二章 IO 函數(shù)1. clearerr:復(fù)位錯(cuò)誤標(biāo)志函數(shù) 152. feof:檢測(cè)文件結(jié)束符函數(shù)1.63. ferror:檢測(cè)流上的錯(cuò)誤函數(shù) 174. fflush :去除文件緩沖區(qū)函數(shù) 185. fgetc:從流中讀取字符函數(shù) 196. fgetpos:取得當(dāng)前文件的句柄函數(shù) 207. fgets:從流中讀取字符串函數(shù) 218. fopen、fclose:文件的翻開與關(guān)閉函數(shù) 229. fprintf :格式化輸出函數(shù) 2.310. fputc:向流中輸出字符函數(shù)2511. fputs:向
47、流中輸出字符串函數(shù) 2512. fread:從流中讀取字符串函數(shù)2613. freopen:替換文件中數(shù)據(jù)流函數(shù) 2714. fscanf:格式化輸入函數(shù) 2815. fseek:文件指針定位函數(shù) 2916. fsetpos:定位流上的文件指針函數(shù) 3017. ftell:返回當(dāng)前文件指針位置函數(shù) 3118. fwrite :向文件寫入數(shù)據(jù)函數(shù) .3119. getc:從流中讀取字符函數(shù) 3220. getchar:從標(biāo)準(zhǔn)輸入文件中讀取字符函數(shù) 3321. gets:從標(biāo)準(zhǔn)輸入文件中讀取字符串函數(shù) 3422. perror:打印系統(tǒng)錯(cuò)誤信息函數(shù) .3523. printf:產(chǎn)生格式化輸出的函數(shù)
48、 3524. putc:向指定流中輸出字符函數(shù) 3625. putchar:向標(biāo)準(zhǔn)輸出文件上輸出字符 3726. puts:將字符串輸出到終端函數(shù) .3727. remove:刪除文件函數(shù) 3828. rename:重命名文件函數(shù) 3929. rewind:重置文件指針函數(shù) .3930. scanf: 格式化輸入函數(shù) 4031. setbuf、setvbuf:指定文件流的緩沖區(qū)函數(shù) 4 132. spri ntf :向字符串寫入格式化數(shù)據(jù)函數(shù) 4233. sscan:從緩沖區(qū)中讀格式化字符串函數(shù) 4334. tmpfile :創(chuàng)立臨時(shí)文件函數(shù) 4435. tmpnam:創(chuàng)立臨時(shí)文件名函數(shù) 44
49、36. ungetc:把字符退回到輸入流函數(shù) 45clearerr :復(fù)位錯(cuò)誤標(biāo)志函數(shù)函數(shù)原型:void clearerr(FILE *fp);頭文件:#in clude是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:復(fù)位錯(cuò)誤標(biāo)志,即:使fp所指向的文件中的錯(cuò)誤標(biāo)志和文件結(jié)束標(biāo)志置0。當(dāng)輸入輸出函數(shù)對(duì)文件進(jìn)行讀寫出錯(cuò)時(shí),文件就會(huì)自動(dòng)產(chǎn)生錯(cuò)誤標(biāo)志,這樣會(huì)影響程序?qū)ξ募暮罄m(xù)操作。clearerr函數(shù)就是要復(fù)位這些錯(cuò)誤標(biāo)志,也就是使fp所指向的文件的錯(cuò)誤標(biāo)志和文件結(jié)束標(biāo)志置 0,從而使文件恢復(fù)正常。返回值:無例程如下:復(fù)位錯(cuò)誤標(biāo)志演示。#include int main(void)FILE *fp;char ch;/
50、*以寫的方式翻開一個(gè)文件名為 test.txt的文件*/fp = fopen(test.txt, w);/*錯(cuò)誤地從fp所指定的文件中讀取一個(gè)字符,并打印它*/ch = fgetc(fp);if (ferror(fp)/*如果此操作錯(cuò)誤,就發(fā)布錯(cuò)誤信息*/printf(This is a error reading!n);/*復(fù)位錯(cuò)誤標(biāo)志*/clearerr(fp); /*關(guān)閉文件*/fclose(fp); return 0;例程說明:1首先程序以只寫的方式翻開一個(gè)文件名為 test.txt的文件。這樣,該文件就只能寫而不能讀了。2程序企圖應(yīng)用fgetc函數(shù)從fp所指的文件中讀出一個(gè)字符,這當(dāng)
51、然是違法的,因 此文件自動(dòng)產(chǎn)生錯(cuò)誤標(biāo)志。3當(dāng)用ferror函數(shù)檢測(cè)出文件流存在錯(cuò)誤時(shí),就發(fā)布一條錯(cuò)誤信息,并用clearerr函數(shù)去除fp指定的文件流所使用的錯(cuò)誤標(biāo)志,也就是使 fp所指的文件的錯(cuò)誤標(biāo)志和文件結(jié) 束標(biāo)志置0。這樣原先的錯(cuò)誤就不會(huì)對(duì)文件的后續(xù)操作產(chǎn)生影響。注意:ferror函數(shù)與clearerr函數(shù)應(yīng)該配合使用。也就是說,通過ferror函數(shù)檢測(cè)出文件有錯(cuò)誤標(biāo)志后要用clearerr函數(shù)復(fù)位錯(cuò)誤標(biāo)志。feof:檢測(cè)文件結(jié)束符函數(shù)函數(shù)原型:int feof(FILE *fp);頭文件:#in clude是否是標(biāo)準(zhǔn)函數(shù):是函數(shù)功能:檢測(cè)流上的文件結(jié)束符,即:檢測(cè)文件是否結(jié)束。應(yīng)用該函
52、數(shù)可以判斷一 個(gè)文件是否到了結(jié)尾。在讀取一個(gè)未知長(zhǎng)度文件時(shí),這個(gè)函數(shù)很有用。返回值:遇到文件結(jié)束符返回非0,否那么返回0。例程如下:檢測(cè)文件結(jié)束標(biāo)志演示。#include int main(void)FILE *stream;/*以只讀方式翻開test.txt文件*/stream = fopen(test.txt, r);/*從文件中讀取一個(gè)字符*/fgetc(stream);/*檢測(cè)是否是EOF,即結(jié)束標(biāo)志*/if (feof(stream)printf(Have reached the end of the file!n);/*關(guān)閉該文件*/fclose(stream);return 0;例程說明:1首先程序翻開一個(gè)名為test.txt的文件。2應(yīng)用fgetc函數(shù)從一個(gè)名為test.txt的文件中讀取一個(gè)字符。3判斷它是否為文件結(jié)束標(biāo)志EOF,如果是文件結(jié)束標(biāo)志,就說明該文件已經(jīng)結(jié)束,于是在屏幕上顯示一條提示信息。如果不是文件的結(jié)束標(biāo)志,就說明文件還未結(jié)束,信息不顯示。4最后關(guān)閉文件。注意:在實(shí)際應(yīng)用中,feof函數(shù)很重要,禾U用它程序員就可以很方便地判
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 制定職業(yè)發(fā)展路線圖計(jì)劃
- 印刷行業(yè)美工工作總結(jié)
- 《豪宅精裝修解讀》課件
- 《制肺部疾病》課件
- 2023年山東省聊城市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年山東省菏澤市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年河南省許昌市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年內(nèi)蒙古自治區(qū)呼和浩特市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2022年貴州省遵義市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 《糖尿病飲食護(hù)理》課件
- 2024年湖北省黃石市黃石港區(qū)政府雇員招聘37人公開引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(kù)(共500題)答案詳解版
- 礦業(yè)施工組織設(shè)計(jì)方案
- 椎體感染的護(hù)理查房
- 產(chǎn)后飲食的健康宣教-課件
- 兒科案例完整-川崎病課件
- RFJ 006-2021 RFP型人防過濾吸收器制造與驗(yàn)收規(guī)范(暫行)
- 電子行業(yè)認(rèn)證行業(yè)深度研究報(bào)告
- 2022年10月自考00318公共政策試題及答案含解析
- 四川省瀘州市2023-2024學(xué)年高二上學(xué)期期末考試語文試題
- 個(gè)人簡(jiǎn)歷電子版表格下載
- 2024年新疆生產(chǎn)建設(shè)兵團(tuán)第十三師淖毛湖經(jīng)濟(jì)技術(shù)開發(fā)區(qū)管委會(huì)招聘筆試沖刺題
評(píng)論
0/150
提交評(píng)論