国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
C標準庫
本文包括大部分C標準庫函數(shù),但沒有列出一些用途有限的函數(shù)以及某些可以簡單的從其他函數(shù)合成的函數(shù),也沒有包含多字節(jié)和本地化函數(shù)。
標準庫中的各個函數(shù)、類型以及宏分別在以下標準頭文件中說明:
<assert.h> <float.h> <math.h> <stdarg.h> <stdlib.h>
<ctype.h> <limits.h> <setjmp.h> <stddef.h> <string.h>
<errno.h> <locale.h> <signal.h> <stdio.h> <time.h>
 

1 輸入與輸出<stdio.h>

頭文件<stdio.h>定義了用于輸入和輸出的函數(shù)、類型和宏。最重要的類型是用于聲明文件指針的FILE。另外兩個常用的類型是size_t和fpos_t,size_t是由運算符sizeof產生的無符號整類型;fpos_t類型定義能夠唯一說明文件中的每個位置的對象。由頭部定義的最有用的宏是EOF,其值代表文件的結尾。

1.1 文件操作

1.1.1 fopen

#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);
返回:成功為FILE指針,失敗為NULL
打開以filename所指內容為名字的文件,返回與之關聯(lián)的流。
mode決定打開的方式,可選值如下:
"r" 打開文本文件用于讀
"w" 創(chuàng)建文本文件用于寫,并刪除已存在的內容(如果有的話)
"a" 添加;打開或創(chuàng)建文本文件用于在文件末尾寫
"rb" 打開二進制文件用于讀
"wb" 創(chuàng)建二進制文件用于寫,并刪除已存在的內容(如果有的話)
"ab" 添加;打開或創(chuàng)建二進制文件用于在文件末尾寫
"r+" 打開文本文件用于更新(即讀和寫)
"w+" 創(chuàng)建文本文件用于更新,并刪除已存在的內容(如果有的話)
"a+" 添加;打開或創(chuàng)建文本文件用于更新和在文件末尾寫
"rb+"或"r+b" 打開二進制文件用于更新(即讀和寫)
"wb+"或"w+b" 創(chuàng)建二進制文件用于更新,并刪除已存在的內容(如果有的話)
"ab+"或"a+b" 添加;打開或創(chuàng)建二進制文件用于更新和在文件末尾寫
后六種方式允許對同一文件進行讀和寫,要注意的是,在寫操作和讀操作的交替過程中,必須調用fflush()或文件定位函數(shù)如fseek()、fsetpos()、rewind()等。
文件名filename的長度最大為FILENAME_MAX個字符,一次最多可打開FOPEN_MAX個文件(在<stdio.h>中定義)。
 

1.1.2 freopen

#include <stdio.h>
FILE *freopen(const char *filename, const char *mode, FILE *stream);
返回:成功為stream,失敗為NULL
以mode指定的方式打開文件filename,并使該文件與流stream相關聯(lián)。freopen()先嘗試關閉與stream關聯(lián)的文件,不管成功與否,都繼續(xù)打開新文件。
該函數(shù)的主要用途是把系統(tǒng)定義的標準流stdin、stdout、stderr重定向到其他文件。
 

1.1.3 fflush

#include <stdio.h>
int fflush(FILE *stream);
返回:成功為0,失敗返回EOF
對輸出流(寫打開),fflush()用于將已寫到緩沖區(qū)但尚未寫出的全部數(shù)據(jù)都寫到文件中;對輸入流,其結果未定義。如果寫過程中發(fā)生錯誤則返回EOF,正常則返回0。
fflush(NULL)用于刷新所有的輸出流。
程序正常結束或緩沖區(qū)滿時,緩沖區(qū)自動清倉。
 

1.1.4 fclose

#include <stdio.h>
int flcose(FILE *stream);
返回:成功為0,失敗返回EOF
刷新stream的全部未寫出數(shù)據(jù),丟棄任何未讀的緩沖區(qū)內的輸入數(shù)據(jù)并釋放自動分配的緩沖區(qū),最后關閉流。
 

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)建一個臨時文件,并返回該流的指針,該文件在被關閉或程序正常結束時被自動刪除。
 

1.1.8 tmpnam

#include <stdio.h>
char *tmpnam(char s[L_tmpnam]);
返回:成功為非空指針,失敗為NULL
若參數(shù)s為NULL(即調用tmpnam(NULL)),函數(shù)創(chuàng)建一個不同于現(xiàn)存文件名字的字符串,并返回一個指向一內部靜態(tài)數(shù)組的指針。
若s非空,則函數(shù)將所創(chuàng)建的字符串存儲在數(shù)組s中,并將它作為函數(shù)值返回。s中至少要有L_tmpnam個字符的空間。
tmpnam函數(shù)在每次被調用時均生成不同的名字。在程序的執(zhí)行過程中,最多只能確保生成TMP_MAX個不同的名字。注意tmpnam函數(shù)只是用于創(chuàng)建一個名字,而不是創(chuàng)建一個文件。
 

1.1.9 setvbuf

#include <stdio.h>
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
返回:成功返回0,失敗返回非0
控制流stream的緩沖區(qū),這要在讀、寫以及其他任何操作之前設置。
如果buf非空,則將buf指向的區(qū)域作為流的緩沖區(qū),如果buf為NULL,函數(shù)將自行分配一個緩沖區(qū)。
size決定緩沖區(qū)的大小。
mode指定緩沖的處理方式,有如下值:
  • _IOFBF,進行完全緩沖;
  • _IOLBF,對文本文件表示行緩沖;
  • _IOLNF,不設置緩沖。
 

1.1.10 setbuf

#include <stdio.h>
void setbuf(FILE *stream, char *buf);
如果buf為NULL,則關閉流stream的的緩沖區(qū);否則setbuf函數(shù)等價于:
    (void)setvbuf(stream, buf, _IOFBF, BUFSIZ)。
注意自定義緩沖區(qū)的尺寸必須為BUFSIZ個字節(jié)。
 

1.2 格式化輸出

1.2.1 fprintf

#include <stdio.h>
int fprintf(FILE *stream, const char *format,…);
返回:成功為實際寫出的字符數(shù),出錯返回負值
按照format說明的格式把變元表中變元內容進行轉換,并寫入stream指向的流。
格式化字符串由兩種類型的對象組成:普通字符(它們被拷貝到輸出流)與轉換規(guī)格說明(它們決定變元的轉換和輸出格式)。每個轉換規(guī)格說明均以字符%開頭,以轉換字符結束。如果%后面的字符不是轉換字符,那么該行為是未定義的。
轉換字符列表如下:
字 符 說明
d, i int;有符號十進制表示法
o unsigned int;無符號八進制表示法(無前導0)
x, X unsigned int;無符號十六進制表示法(無前導0X和0x),對0x用abcdef,對0X用ABCDEF
u unsigned int;無符號十進制表示法
c int;單個字符,轉換為unsigned char類型后輸出
s char *;輸出字符串直到'\0'或者達到精度指定的字符數(shù)
f double;形如[-]mmm.ddd的十進制浮點數(shù)表示法,d的數(shù)目由精度確定。缺省精度為6位,精度為0時不輸出小數(shù)點
e, E double;形如[-]m.dddddde[+-]xx或者[-]m.ddddddE[+-]xx的十進制浮點數(shù)表示法,d的數(shù)目由精度確定。缺省精度為6位,精度為0時不輸出小數(shù)點
g G double;當指數(shù)值小于-4或大于等于精度時,采用%e或%E的格式;否則使用%f的格式。尾部的0與小數(shù)點不打印
p void *;輸出指針值(具體表示與實現(xiàn)相關)
n int *;到目前為止以此格式調用函數(shù)輸出的字符的數(shù)目將被寫入到相應變元中,不進行變元轉換
% 不進行變元轉換,輸出%
在%與轉換字符之間依次可以有下列標記:
標記 說明
- 指定被轉換的變元在其字段內左對齊
+ 指定在輸出的數(shù)前面加上正負號
空格 如果第一個字符不是正負號,那么在其前面附加一個空格
0 對于數(shù)值轉換,在輸出長度小于字段寬度時,加前導0
# 指定其他輸出格式,對于o格式,第一個數(shù)字必須為零;對于x/X格式,指定在輸出的非0值前加0x或0X;對于e/E/f/g/G格式,指定輸出總有一個小數(shù)點;對于g/GG格式,還指定輸出值后面無意義的0將被保留。
寬度[number] 一個指定最小字段寬的數(shù)。轉換后的變元輸出寬度至少要達到這個數(shù)值。如果變元的字符數(shù)小于此數(shù)值,那么在變元左/右邊添加填充字符。填充字符通常為空格(設置了0標記則為0)。
. 點號用于把字段寬和精度分開
精度[number] 對于字符串,說明輸出字符的最大數(shù)目;對于e/E/f格式,說明輸出的小數(shù)位數(shù);對于g/G格式,說明輸出的有效位數(shù);對于整數(shù),說明輸出的最小位數(shù)(必要時可加前導0)
h/l/L 長度修飾符,h表示對應的變元按short或unsigned short類型輸出;l表示對應的變元按long或unsigned long類型輸出;L表示對應的變元按long double類型輸出
在格式串中字段寬度和精度二者都可以用*來指定,此時該值可通過轉換對應的變元來獲得,這些變元必須是int類型。
 

1.2.2 printf

#include <stdio.h>
int printf(const char *format, …);
printf(...)等價于fprintf(stdout, ...)。
 

1.2.3 sprintf

#include <stdio.h>
int sprintf(char *buf, const char *format, …);
返回:實際寫到字符數(shù)組的字符數(shù),不包括'\0'
與printf()基本相同,但輸出寫到字符數(shù)組buf而不是stdout中,并以'\0'結束。
注意,sprintf()不對buf進行邊界檢查,buf必須足夠大,以便能裝下輸出結果。
 

1.2.4 snprintf

#include <stdio.h>
int snprintf(char *buf, size_t num, const char *format, …);
除了最多為num-1個字符被存放到buf指向的數(shù)組之外,snprintf()和sprintf()完全相同。數(shù)組以'\0'結束。
該函數(shù)不屬于C89(C99增加的),但應用廣泛,所以將其包括了進來。
 

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);
這幾個函數(shù)與對應的printf()等價,但變元表由arg代替。參見第7節(jié)有關<stdarg.h>頭文件的討論。
vsnprintf是C99增加的。
 

1.3 格式化輸入

1.3.1 fscanf

#include <stdio.h>
int fscanf(FILE *stream, const char *format, …);
返回:成功為實際被轉換并賦值的輸入項數(shù)目,到達文件尾或變元被轉換前出錯為EOF
在格式串format的控制下從流stream中讀入字符,把轉換后的值賦給后續(xù)各個變元,在此每一個變元都必須是一個指針。當格式串format結束時函數(shù)返回。
格式串format通常包含有用于指導輸入轉換的轉換規(guī)格說明。格式串中可以包含:
  • 空格或制表符,他們將被忽略;
  • 普通字符(%除外),與輸入流中下一個非空白字符相匹配;
  • 轉換規(guī)格說明:由一個%、一個賦值屏蔽字符*(可選)、一個用于指定最大字段寬度的數(shù)(可選)、一個用于指定目標字段的字符h/l/L(可選)、一個轉換字符組成。
轉換規(guī)格說明決定了輸入字段的轉換方式。通常把結果保存在由對應變元指向的變量中。然而,如果轉換規(guī)格說明中包含有賦值屏蔽字符*,例如%*s,那么就跳過對應的輸入字段,不進行賦值。輸入字段是一個由非空白符組成的字符串,當遇到空白符或到達最大字段寬(如果有的話)時,對輸入字段的讀入結束。這意味著scanf函數(shù)可以跨越行的界限來讀入其輸入,因為換行符也是空白符(空白符包括空格、橫向制表符、縱向制表符、換行符、回車符和換頁符)。
轉換字符列表如下:
字符 輸入數(shù)據(jù);變元類型
d 十進制整數(shù);int *
i 整數(shù);int *。該整數(shù)可以是以0開頭的八進制數(shù),也可以是以0x/0X開頭的十六進制數(shù)
o 八進制數(shù)(可以帶或不帶前導0);unsigned int *
u 無符號十進制整數(shù);unsigned int *
x 十六進制整數(shù)(可以帶或不帶前導0x/0X);unsigned int *
c 字符;char *。按照字段寬的大小把讀入的字符保存在指定的數(shù)組中,不加入字符'\0'。字段寬的缺省值為1。在這種情況下,不跳過空白符;如果要讀入下一個非空白符,使用%1s(數(shù)字1)
s 有非空白符組成的字符串(不包含引號);char *。該變元指針指向一個字符數(shù)組,該字符數(shù)組有足夠空間來保存該字符串以及在末尾添加的'\0'
e/f/g 浮點數(shù);float *。float浮點數(shù)的輸入格式為:一個任選的正負號,一串可能包含小數(shù)點的數(shù)字和一個任選的指數(shù)字段。指數(shù)字段由字母e/E以及后跟的一個可能帶正負號的整數(shù)組成
p 用printf("%p")調用輸出的指針值;void *
n 將到目前為止此調用所讀的字符數(shù)寫入變元;int *。不讀入輸入字符。不增加轉換項目計數(shù)
[...] 用方括號括起來的字符集中的字符來匹配輸入,以找到最長的非空字符串;char *。在末尾添加'\0'。格式[]...]表示字符集中包含字符]
[^...] 用不在方括號里的字符集中的字符來匹配輸入,以找到最長的非空字符串;char *。在末尾添加'\0'。格式[]...]表示字符集中包含字符]
% 字面值%,不進行賦值
字段類型字符:
  • 如果變元是指向short類型而不是int類型的指針,那么在d/i/n/o/u/x這幾個轉換字符前可以加上字符h;
  • 如果變元是指向long類型的指針,那么在d/i/n/o/u/x這幾個轉換字符前可以加上字符l
  • 如果變元是指向double類型而不是float類型的指針,那么在e/f/g這幾個轉換字符前可以加上字符l
  • 如果變元是指向long double類型的指針,那么在e/f/g前可以加上字符L。
 

1.3.2 scanf

#include <stdio.h>
int scanf(const char *format, …);
scanf(...)等價于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中下一個字符(轉換為int類型)。如果到達文件末尾或發(fā)生錯誤,則返回EOF。
 

1.4.2 fgets

#include <stdio.h>
char *fgets(char *str, int num, FILE *stream);
返回:成功返回str,到達文件尾或發(fā)生錯誤返回NULL
從流stream中讀入最多num-1個字符到數(shù)組str中。當遇到換行符時,把換行符保留在str中,讀入不再進行。數(shù)組str以'\0'結尾。
 

1.4.3 fputc

#include <stdio.h>
int fputc(int ch, FILE *stream);
返回:成功為所寫的字符,出錯為EOF
把字符ch(轉換為unsigned char類型)輸出到流stream中。
 

1.4.4 fputs

#include <stdio.h>
int fputs(const char *str, FILE *stream);
返回:成功返回非負值,失敗返回EOF
把字符串str輸出到流stream中,不輸出終止符'\0'。
 

1.4.5 getc

#include <stdio.h>
int getc(FILE *stream);
getc()與fgetc()等價。不同之處為:當getc函數(shù)被定義為宏時,它可能多次計算stream的值。
 

1.4.6 getchar

#include <stdio.h>
int getchar(void);
等價于getc(stdin)。
 

1.4.7 gets

#include <stdio.h>
char *gets(char *str);
返回:成功為str,到達文件尾或發(fā)生錯誤則為NULL
從stdin中讀入下一個字符串到數(shù)組str中,并把讀入的換行符替換為字符'\0'。
gets()可讀入無限多字節(jié),所以要保證str有足夠的空間,防止溢出。
 

1.4.8 putc

#include <stdio.h>
int putc(int ch, FILE *stream);
putc()與fputc()等價。不同之處為:當putc函數(shù)被定義為宏時,它可能多次計算stream的值。
 

1.4.9 putchar

#include <stdio.h>
int putchar(int ch);
等價于putc(ch, stdout)。
 

1.4.10 puts

#include <stdio.h>
int puts(const char *str);
返回:成功返回非負值,出錯返回EOF
把字符串str和一個換行符輸出到stdout。
 

1.4.11 ungetc

#include <stdio.h>
int ungetc(int ch, FILE *stream);
返回:成功時為ch,出錯為EOF
把字符ch(轉換為unsigned char類型)寫回到流stream中,下次對該流進行讀操作時,將返回該字符。對每個流只保證能寫回一個字符(有些實現(xiàn)支持回退多個字符),且此字符不能是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ù)
從流stream中讀入最多count個長度為size個字節(jié)的對象,放到buf指向的數(shù)組中。
返回值可能小于指定讀入數(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ù)
把buf指向的數(shù)組中count個長度為size的對象輸出到流stream中,并返回被輸出的對象數(shù)。如果發(fā)生錯誤,則返回一個小于count的值。
 

1.6 文件定位函數(shù)

1.6.1 fseek

#include <stdio.h>
int fseek(FILE *stream, long int offset, int origin);
返回:成功為0,出錯為非0
對流stream相關的文件定位,隨后的讀寫操作將從新位置開始。
對于二進制文件,此位置被定位在由origin開始的offset個字符處。origin的值可能為SEEK_SET(文件開始處)、SEEK_CUR(當前位置)或SEEK_END(文件結束處)。
對于文本流,offset心須為0,或者是由函數(shù)ftell()返回的值(此時origin的值必須是SEEK_SET)。
 

1.6.2 ftell

#include <stdio.h>
long int ftell(FILE *stream);
返回與流stream相關的文件的當前位置。出錯時返回-1L。
 

1.6.3 rewind

#include <stdio.h>
void rewind(FILE *stream);
rewind(fp)等價于fssek(fp, 0L, SEEK_SET)與clearerr(fp)這兩個函數(shù)順序執(zhí)行的效果,即把與流stream相關的文件的當前位置移到開始處,同時清除與該流相關的文件尾標志和錯誤標志。
 

1.6.4 fgetpos

#include <stdio.h>
int fgetpos(FILE *stream, fpos_t *position);
返回:成功返回0,失敗返回非0
把流stream的當前位置記錄在*position中,供隨后的fsetpos()調用時使用。
 

1.6.5 fsetpos

#include <stdio.h>
int fsetpos(FILE *stream, const fpos_t *position);
返回:成功返回0,失敗返回非0
把流stream的位置定位到*position中記錄的位置。*position的值是之前調用fgetpos()記錄下來的。
 

1.7 錯誤處理函數(shù)

當發(fā)生錯誤或到達文件末尾時,標準庫中的許多函數(shù)將設置狀態(tài)指示符。這些狀態(tài)指示符可被顯式地設置和測試。另外,(定義在<errno.h>中的)整數(shù)表達式errno可包含一個出錯序號,該數(shù)將進一步給出最近一次出錯的信息。

1.7.1 clearerr

#include <stdio.h>
void clearerr(FILE *stream);
清除與流stream相關的文件結束指示符和錯誤指示符。
 

1.7.2 feof

#include <stdio.h>
int feof(FILE *stream);
返回:到達文件尾時返回非0值,否則返回0
與流stream相關的文件結束指示符被設置時,函數(shù)返回一個非0值。
 

1.7.3 ferror

#include <stdio.h>
int ferror(FILE *stream);
返回:無錯返回0,有錯返回非0
與流stream相關的文件出錯指示符被設置時,函數(shù)返回一個非0值。
 

1.7.4 perror

#include <stdio.h>
void perror(const char *str);
perror(s)用于輸出字符串s以及與全局變量errno中的整數(shù)值相對應的出錯信息,具體出錯信息的內容依賴于實現(xiàn)。該函數(shù)的功能類似于:
    fprintf(stderr, "%s: %s\n", s, "出錯信息");
可參見第3節(jié)介紹的strerror函數(shù)。
 
 

2 字符類測試<ctype.h>

頭文件<ctype.h>中說明了一些用于測試字符的函數(shù)。每個函數(shù)的變元均為int類型,變元的值必須是EOF或可用unsignedchar類型表示的字符,函數(shù)的返回值為int類型。如果變元滿足所指定的條件,那么函數(shù)返回非0值(表示真);否則返回值為0(表示假)。這些函數(shù)包括2.1~2.11。
在7位ASCII字符集中,可打印字符是從0x20(' ')到0x7E('~')之間的字符;控制字符是從0(NUL)到0x1F(US)之間的字符和字符0x7F(DEL)。

2.1 isalnum

#include <ctype.h>
int sialnum(int ch);
變元為字母或數(shù)字時,函數(shù)返回非0值,否則返回0。
 

2.2 isalpha

#include <ctype.h>
int isalpha(int ch);
當變元為字母表中的字母時,函數(shù)返回非0值,否則返回0。各種語言的字母表互不相同,對于英語來說,字母表由大寫和小寫的字母A到Z組成。
 

2.3 iscntrl

#include <ctype.h>
int iscntrl(int ch);
當變元是控制字符時,函數(shù)返回非0,否則返回0。
 

2.4 isdigit

#include <ctype.h>
int isdigit(int ch);
當變元是十進制數(shù)字時,函數(shù)返回非0值,否則返回0。
 

2.5 isgraph

#include <ctype.h>
int isgraph(int ch);
如果變元為除空格之外的任何可打印字符,則函數(shù)返回非0值,否則返回0。
 

2.6 islower

#include <ctype.h>
int islower(int ch);
如果變元是小寫字母,函數(shù)返回非0值,否則返回0。
 

2.7 isprint

#include <ctype.h>
int isprint(int ch);
如果變元是可打印字符(含空格),則函數(shù)返回非0值,否則返回0。
 

2.8 ispunct

#include <ctype.h>
int ispunct(int ch);
如果變元是除空格、字母和數(shù)字外的可打印字符,則函數(shù)返回非0,否則返回0。
 

2.9 isspace

#include <ctype.h>
int isspace(int ch);
當變元為空白字符(包括空格、換頁符、換行符、回車符、水平制表符和垂直制表符)時,函數(shù)返回非0,否則返回0。
 

2.10 isupper

#include <ctype.h>
int isupper(int ch);
如果變元為大寫字母,函數(shù)返回非0,否則返回0。
 

2.11 isxdigit

#include <ctype.h>
int isxdigit(int ch);
當變元為十六進制數(shù)字時,函數(shù)返回非0,否則返回0。
 

2.12 tolower

#include <string.h>
int tolower(int ch);
當ch為大寫字母時,返回其對應的小寫字母;否則返回ch。
 

2.13 toupper

#include <string.h>
int toupper(int ch);
當ch為小寫字母時,返回其對應的大寫字母;否則返回ch。
 
 

3 字符串函數(shù)<string.h>

在頭文件<string.h>中定義了兩組字符串函數(shù)。第一組函數(shù)的名字以str開頭;第二組函數(shù)的名字以mem開頭。只有函數(shù)memmove對重疊對象間的拷貝進行了定義,而其他函數(shù)都未定義。比較類函數(shù)將其變元視為unsigned char類型的數(shù)組。

3.1 strcpy

#include <string.h>
char *strcpy(char *str1, const char *str2);
把字符串str2(包括'\0')拷貝到字符串str1當中,并返回str1。
 

3.2 strncpy

#include <string.h>
char *strncpy(char *str1, const char *str2, size_t count);
把字符串str2中最多count個字符拷貝到字符串str1中,并返回str1。如果str2中少于count個字符,那么就用'\0'來填充,直到滿足count個字符為止。
 

3.3 strcat

#include <string.h>
char *strcat(char *str1, const char *str2);
把str2(包括'\0')拷貝到str1的尾部(連接),并返回str1。其中終止原str1的'\0'被str2的第一個字符覆蓋。
 

3.4 strncat

#include <string.h>
char *strncat(char *str1, const char *str2, size_t count);
把str2中最多count個字符連接到str1的尾部,并以'\0'終止str1,返回str1。其中終止原str1的'\0'被str2的第一個字符覆蓋。
注意,最大拷貝字符數(shù)是count+1。
 

3.5 strcmp

#include <string.h>
int strcmp(const char *str1, const char *str2);
按字典順序比較兩個字符串,返回整數(shù)值的意義如下:
  • 小于0,str1小于str2;
  • 等于0,str1等于str2;
  • 大于0,str1大于str2;
 

3.6 strncmp

#include <string.h>
int strncmp(const char *str1, const char *str2, size_t count);
同strcmp,除了最多比較count個字符。根據(jù)比較結果返回的整數(shù)值如下:
  • 小于0,str1小于str2;
  • 等于0,str1等于str2;
  • 大于0,str1大于str2;
 

3.7 strchr

#include <string.h>
char *strchr(const char *str, int ch);
返回指向字符串str中字符ch第一次出現(xiàn)的位置的指針,如果str中不包含ch,則返回NULL。
 

3.8 strrchr

#include <string.h>
char *strrchr(const char *str, int ch);
返回指向字符串str中字符ch最后一次出現(xiàn)的位置的指針,如果str中不包含ch,則返回NULL。
 

3.9 strspn

#include <string.h>
size_t strspn(const char *str1, const char *str2);
返回字符串str1中由字符串str2中字符構成的第一個子串的長度。
 

3.10 strcspn

#include <string.h>
size_t strcspn(const char *str1, const char *str2);
返回字符串str1中由不在字符串str2中字符構成的第一個子串的長度。
 

3.11 strpbrk

#include <string.h>
char *strpbrk(const char *str1, const char *str2);
返回指向字符串str2中的任意字符第一次出現(xiàn)在字符串str1中的位置的指針;如果str1中沒有與str2相同的字符,那么返回NULL。
 

3.12 strstr

#include <string.h>
char *strstr(const char *str1, const char *str2);
返回指向字符串str2第一次出現(xiàn)在字符串str1中的位置的指針;如果str1中不包含str2,則返回NULL。
 

3.13 strlen

#include <string.h>
size_t strlen(const char *str);
返回字符串str的長度,'\0'不算在內。
 

3.14 strerror

#include <string.h>
char *strerror(int errnum);
返回指向與錯誤序號errnum對應的錯誤信息字符串的指針(錯誤信息的具體內容依賴于實現(xiàn))。
 

3.15 strtok

#include <string.h>
char *strtok(char *str1, const char *str2);
在str1中搜索由str2中的分界符界定的單詞。
對strtok()的一系列調用將把字符串str1分成許多單詞,這些單詞以str2中的字符為分界符。第一次調用時str1非空,它搜索str1,找出由非str2中的字符組成的第一個單詞,將str1中的下一個字符替換為'\0',并返回指向單詞的指針。隨后的每次strtok()調用(參數(shù)str1用NULL代替),均從前一次結束的位置之后開始,返回下一個由非str2中的字符組成的單詞。當str1中沒有這樣的單詞時返回NULL。每次調用時字符串str2可以不同。
如:
char *p;
p = strtok("The summer soldier,the sunshine patriot", " ");
printf("%s", p);
do {
p = strtok("\0", ", "); /* 此處str2是逗號和空格 */
if (p)
printf("|%s", p);
} while (p);
顯示結果是:The | summer | soldier | the | sunshine | patriot
 

3.16 memcpy

#include <string.h>
void *memcpy(void *to, const void *from, size_t count);
把from中的count個字符拷貝到to中。并返回to。
 

3.17 memmove

#include <string.h>
void *memmove(void *to, const void *from, size_t count);
功能與memcpy類似,不同之處在于,當發(fā)生對象重疊時,函數(shù)仍能正確執(zhí)行。
 

3.18 memcmp

#include <string.h>
int memcmp(const void *buf1, const void *buf2, size_t count);
比較buf1和buf2的前count個字符,返回值與strcmp的返回值相同。
 

3.19 memchr

#include <string.h>
void *memchr(const void *buffer, int ch, size_t count);
返回指向ch在buffer中第一次出現(xiàn)的位置指針,如果在buffer的前count個字符當中找不到匹配,則返回NULL。
 

3.20 memset

#include <string.h>
void *memset(void *buf, int ch, size_t count);
把buf中的前count個字符替換為ch,并返回buf。
 
 

4 數(shù)學函數(shù)<math.h>

頭文件<math.h>中說明了數(shù)學函數(shù)和宏。
宏EDOM和ERANGE(定義在頭文件<errno.h>中)是兩個非0整常量,用于引發(fā)各個數(shù)學函數(shù)的定義域錯誤和值域錯誤;HUGE_VAL是一個double類型的正數(shù)。當變元取值在函數(shù)的定義域之外時,就會出現(xiàn)定義域錯誤。在發(fā)生定義域錯誤時,全局變量errno的值被置為EDOM,函數(shù)的返回值視具體實現(xiàn)而定。如果函數(shù)的結果不能用double類型表示,那么就會發(fā)生值域錯誤。當結果上溢時,函數(shù)返回HUGE_VAL并帶有正確的符號(正負號),errno的值被置為ERANGE。當結果下溢時,函數(shù)返回0,而errno是否被設置為ERANGE視具體實現(xiàn)而定。

4.1 sin

#include <math.h>
double sin(double arg);
返回arg的正弦值,arg單位為弧度。
 

4.2 cos

#include <math.h>
double cos(double arg);
返回arg的余弦值,arg單位為弧度。
 

4.3 tan

#include <math.h>
double tan(double arg);
返回arg的正切值,arg單位為弧度。
 

4.4 asin

#include <math.h>
double asin(double arg);
返回arg的反正弦值sin-1(x),值域為[-pi/2,pi/2], 其中變元范圍[-1,1]。
 

4.5 acos

#include <math.h>
double acos(double arg);
返回arg的反余弦值cos-1(x),值域為[0,pi], 其中變元范圍[-1,1]。
 

4.6 atan

#include <math.h>
double atan(double arg);
返回arg的反正切值tan-1(x),值域為[-pi/2,pi/2]。
 

4.7 atan2

#include <math.h>
double atan2(double a, double b);
返回a/b的反正切值tan-1(a/b),值域為[-pi,pi]。
 

4.8 sinh

#include <math.h>
double sinh(double arg);
返回arg的雙曲正弦值。
 

4.9 cosh

#include <math.h>
double cosh(double arg);
返回arg的雙曲余弦值。
 

4.10 tanh

#include <math.h>
double tanh(double arg);
返回arg的雙曲正切值。
 

4.11 exp

#include <math.h>
double exp(double arg);
返回冪函數(shù)ex。
 

4.12 log

#include <math.h>
double log(double arg);
返回自然對數(shù)ln(x),其中變元范圍arg > 0。
 

4.13 log10

#include <math.h>
double log10(double arg);
返回以10為底的對數(shù)log10(x),其中變元范圍arg > 0。
 

4.14 pow

#include <math.h>
double pow(double x, double y);
返回xy,如果x=0且y<=0或者如果x<0且y不是整數(shù),那么產生定義域錯誤。
 

4.15 sqrt

#include <math.h>
double sqrt(double arg);
返回arg的平方根,其中變元范圍arg>=0。
 

4.16 ceil

#include <math.h>
double ceil(double arg);
返回不小于arg的最小整數(shù)。
 

4.17 floor

#include <math.h>
double floor(double arg);
返回不大于arg的最大整數(shù)。
 

4.18 fabs

#include <math.h>
double fabs(double arg);
返回arg的絕對值|x|。
 

4.19 ldexp

#include <math.h>
double ldexp(double num, int exp);
返回num * 2exp
 

4.20 frexp

#include <math.h>
double frexp(double num, int *exp);
把num分成一個在[1/2,1)區(qū)間的真分數(shù)和一個2的冪數(shù)。將真分數(shù)返回,冪數(shù)保存在*exp中。如果num等于0,那么這兩部分均為0。
 

4.21 modf

#include <math.h>
double modf(double num, double *i);
把num分成整數(shù)和小數(shù)兩部分,兩部分均與num有同樣的正負號。函數(shù)返回小數(shù)部分,整數(shù)部分保存在*i中。
 

4.22 fmod

#include <math.h>
double fmod(double a, double b);
返回a/b的浮點余數(shù),符號與a相同。如果b為0,那么結果由具體實現(xiàn)而定。
 
 

5 實用函數(shù)<stdlib.h>

在頭文件<stdlib.h>中說明了用于數(shù)值轉換、內存分配以及具有其他相似任務的函數(shù)。

5.1 atof

#include <stdlib.h>
double atof(const char *str);
把字符串str轉換成double類型。等價于:strtod(str, (char**)NULL)。
 

5.2 atoi

#include <stdlib.h>
int atoi(const char *str);
把字符串str轉換成int類型。等價于:(int)strtol(str, (char**)NULL, 10)。
 

5.3 atol

#include <stdlib.h>
long atol(const char *str);
把字符串str轉換成long類型。等價于:strtol(str, (char**)NULL, 10)。
 

5.4 strtod

#include <stdlib.h>
double strtod(const char *start, char **end);
把字符串start的前綴轉換成double類型。在轉換中跳過start的前導空白符,然后逐個讀入構成數(shù)的字符,任何非浮點數(shù)成分的字符都會終止上述過程。如果end不為NULL,則把未轉換部分的指針保存在*end中。
如果結果上溢,返回帶有適當符號的HUGE_VAL,如果結果下溢,那么函數(shù)返回0。在這兩種情況下,errno均被置為ERANGE。
 

5.5 strtol

#include <stdlib.h>
long int strtol(const char *start, char **end, int radix);
把字符串start的前綴轉換成long類型,在轉換中跳過start的前導空白符。如果end不為NULL,則把未轉換部分的指針保存在*end中。
如果radix的值在2到36間之間,那么轉換按該基數(shù)進行;如果radix為0,則基數(shù)為八進制、十進制、十六進制,以0為前導的是八進制,以0x或0X為前導的是十六進制。無論在哪種情況下,串中的字母是表示10到radix-1之間數(shù)字的字母。如果radix是16,可以加上前導0x或0X。
如果結果上溢,則依據(jù)結果的符號返回LONG_MAX或LONG_MIN,置errno為ERANGE。
 

5.6 strtoul

#include <stdlib.h>
unsigned long int strtoul(const char *start, char **end, int radix);
與strtol()類似,只是結果為unsigned long類型,溢出時值為ULONG_MAX。
 

5.7 rand

#include <stdlib.h>
int rand(void);
產生一個0到RAND_MAX之間的偽隨機整數(shù)。RAND_MAX值至少為32767。
 

5.8 srand

#include <stdlib.h>
void srand(unsigned int seed);
設置新的偽隨機數(shù)序列的種子為seed。種子的初值為1。
 

5.9 calloc

#include <stdlib.h>
void *calloc(size_t num, size_t size);
為num個大小為size的對象組成的數(shù)組分配足夠的內存,并返回指向所分配區(qū)域的第一個字節(jié)的指針;如果內存不足以滿足要求,則返回NULL。
分配的內存區(qū)域中的所有位被初始化為0。
 

5.10 malloc

#include <stdlib.h>
void *malloc(size_t size);
為大小為size的對象分配足夠的內存,并返回指向所分配區(qū)域的第一個字節(jié)的指針;如果內存不足以滿足要求,則返回NULL。
不對分配的內存區(qū)域進行初始化。
 

5.11 realloc

#include <stdlib.h>
void *realloc(void *ptr, size_t size);
將ptr指向的內存區(qū)域的大小改為size個字節(jié)。如果新分配的內存比原內存大,那么原內存的內容保持不變,增加的空間不進行初始化。如果新分配的內存比原內存小,那么新內存保持原內存區(qū)中前size字節(jié)的內容。函數(shù)返回指向新分配空間的指針。如果不能滿足要求,則返回NULL,原ptr指向的內存區(qū)域保持不變。
如果ptr為NULL,則行為等價于malloc(size)。
如果size為0,則行為等價于free(ptr)。
 

5.12 free

#include <stdlib.h>
void free(void *ptr);
釋放ptr指向的內存空間,若ptr為NULL,則什么也不做。ptr必須指向先前用動態(tài)分配函數(shù)malloc、realloc或calloc分配的空間。
 

5.13 abort

#include <stdlib.h>
void abort(void);
使程序非正常終止。其功能類似于raise(SIGABRT)。
 

5.14 exit

#include <stdlib.h>
void exit(int status);
使程序正常終止。atexit函數(shù)以與注冊相反的順序被調用,所有打開的文件被刷新,所有打開的流被關閉。status的值如何被返回依具體的實現(xiàn)而定,但用0表示正常終止,也可用值EXIT_SUCCESS和EXIT_FAILURE。
 

5.15 atexit

#include <stdlib.h>
int atexit(void (*func)(void));
注冊在程序正常終止時所要調用的函數(shù)func。如果成功注冊,則函數(shù)返回0值,否則返回非0值。
 

5.16 system

#include <stdlib.h>
int system(const char *str);
把字符串str傳送給執(zhí)行環(huán)境。如果str為NULL,那么在存在命令處理程序時,返回0值。如果str的值非NULL,則返回值與具體的實現(xiàn)有關。
 

5.17 getenv

#include <stdlib.h>
char *getenv(const char *name);
返回與name相關的環(huán)境字符串。如果該字符串不存在,則返回NULL。其細節(jié)與具體的實現(xiàn)有關。
 

5.18 bsearch

#include <stdlib.h>
void *bsearch(const void *key, const void *base, size_t n, size_t size,\
int (*compare)(const void *, const void *));
在base[0]...base[n-1]之間查找與*key匹配的項。size指出每個元素占有的字節(jié)數(shù)。函數(shù)返回一個指向匹配項的指針,若不存在匹配則返回NULL。
函數(shù)指針compare指向的函數(shù)把關鍵字key和數(shù)組元素比較,比較函數(shù)的形式為:
int func_name(const void *arg1, const void *arg2);
arg1是key指針,arg2是數(shù)組元素指針。
返回值必須如下:
  • arg1 < arg2時,返回值<0;
  • arg1 == arg2時,返回值==0;
  • arg1 > arg2時,返回值>0。
數(shù)組base必須按升序排列(與compare函數(shù)定義的大小次序一致)。
 

5.19 qsort

#include <stdlib.h>
void qsort(void *base, size_t n, size_t size, \
int (*compare)(const void *, const void *));
對由n個大小為size的對象構成的數(shù)組base進行升序排序。
比較函數(shù)compare的形式如下:
int func_name(const void *arg1, const voie *arg2);
其返回值必須如下所示:
  • arg1 < arg2,返回值<0;
  • arg1 == arg2,返回值==0;
  • arg1 > arg2,返回值>0。
 

5.20 abs

#include <stdlib.h>
int abs(int num);
返回int變元num的絕對值。
 

5.21 labs

#include <stdlib.h>
long labs(long int num);
返回long類型變元num的絕對值。
 

5.22 div

#include <stdlib.h>
div_t div(int numerator, int denominator);
返回numerator/denominator的商和余數(shù),結果分別保存在結構類型div_t的兩個int成員quot和rem中。
 

5.23 ldiv

#include <stdlib.h>
ldiv_t div(long int numerator, long int denominator);
返回numerator/denominator的商和余數(shù),結果分別保存在結構類型ldiv_t的兩個long成員quot和rem中。
 
 

6 診斷<assert.h>

6.1 assert

#include <assert.h>
void assert(int exp);
assert宏用于為程序增加診斷功能。當assert(exp)執(zhí)行時,如果exp為0,則在標準出錯輸出流stderr輸出一條如下所示的信息:
    Assertion failed: expression, file filename, line nnn
然后調用abort終止執(zhí)行。其中的源文件名filename和行號nnn來自于預處理宏__FILE__和__LINE__。
如果<assert.h>被包含時定義了宏NDEBUG,那么宏assert被忽略。
 
 

7 變長變元表<stdarg.h>

頭文件<stdarg.h>中的說明提供了依次處理含有未知數(shù)目和類型的函數(shù)變元表的機制。

7.1 va_start

7.2 va_arg

7.3 va_end

#include <stdarg.h>
void va_start(va_list ap, lastarg);
type va_arg(va_list ap, type);
void va_end(va_list ap);
假設函數(shù)f含有可變數(shù)目的變元,lastarg是它的最后一個有名參數(shù),然后在f內說明一個類型為va_list的變量ap,它將依次指向每個變元:
    va_list ap;
在訪問任何未命名的變元前必須用va_start宏對ap進行初始化:
    va_start(ap, lastarg);
此后,宏va_arg的每次執(zhí)行將產生一個與下一個未命名的變元有相同類型和值的值,它同時還修改ap,以使下一次使用va_arg時返回下一個變元:
    va_arg(ap, type);
當所有的變元處理完畢之后,f返回之前,必須調用一次宏va_end:
   va_end(ap);
例子:函數(shù)sum_series()的第一個參數(shù)是變元項數(shù)。
double sum_series(int num, … )
{
double sum = 0.0, t;
va_list ap;

va_start(ap, num);
for (; num; num--) {
t = va_arg(ap, double);
sum += t;
}
va_end(ap);
return sum;
}
 
 

8 非局部跳轉<setjmp.h>

頭文件<setjmp.h>中的說明提供了一種避免通常的函數(shù)調用和返回順序的途徑,特別的,它允許立即從一個多層嵌套的函數(shù)調用中返回。

8.1 setjmp

#include <setjmp.h>
int setjmp(jmp_buf env);
setjmp()宏把當前狀態(tài)信息保存到env中,供以后longjmp()恢復狀態(tài)信息時使用。如果是直接調用setjmp(),那么返回值為0;如果是由于調用longjmp()而調用setjmp(),那么返回值非0。setjmp()只能在某些特定情況下調用,如在if語句、switch語句及循環(huán)語句的條件測試部分以及一些簡單的關系表達式中。
 

8.2 longjmp

#include <setjmp.h>
void longjmp(jmp_buf env, int val);
longjmp()用于恢復由最近一次調用setjmp()時保存到env的狀態(tài)信息。當它執(zhí)行完時,程序就象setjmp()剛剛執(zhí)行完并返回非0值val那樣繼續(xù)執(zhí)行。包含setjmp()宏調用的函數(shù)一定不能已經終止。所有可訪問的對象的值都與調用longjmp()時相同,唯一的例外是,那些調用setjmp()宏的函數(shù)中的非volatile自動變量如果在調用setjmp()后有了改變,那么就變成未定義的。
 
 

9 信號處理<signal.h>

頭文件<signal.h>中提供了一些用于處理程序運行期間所引發(fā)的異常條件的功能,如處理來源于外部的中斷信號或程序執(zhí)行期間出現(xiàn)的錯誤等事件。

9.1 signal

#include <signal.h>
void (*signal(int sig, void (*handler)(int)))(int);
signal()用于確定以后當信號sig出現(xiàn)時的處理方法。如果handler的值是SIG_DFL,那么就采用實現(xiàn)定義的缺省行為;如果handler的值是SIG_IGN,那么就忽略該信號;否則,調用handler所指向的函數(shù)(參數(shù)為信號類型)。有效的信號包括:
SIGABRT 異常終止,如調用abort()。
SIGFPE 算術運算出錯,如除數(shù)為0或溢出。
SIGILL 非法函數(shù)映象,如非法指令。
SIGINT 交互式信號,如中斷。
SIGSEGV 非法訪問存儲器,如訪問不存在的內存單元。
SIGTERM 發(fā)送給本程序的終止請求信號。
signal()返回信號sig原來的的handler;如果出錯,則返回SIG_ERR。
當隨后出現(xiàn)信號sig時,就中斷正在執(zhí)行的操作,轉而執(zhí)行信號處理函數(shù)(*handler)(sig)。如果從信號處理程序中返回,則從中斷的位置繼續(xù)執(zhí)行。
信號的初始狀態(tài)由實現(xiàn)定義。
 

9.2 raise

#include <signal.h>
int raise(int sig);
向程序發(fā)送信號sig。如果發(fā)送不成功,就返回一個非0值。
 
 

10 日期與時間函數(shù)<time.h>

頭文件<time.h>中說明了一些用于處理日期和時間的類型和函數(shù)。其中的一部分函數(shù)用于處理當?shù)貢r間,因為時區(qū)等原因,當?shù)貢r間與日歷時間可能不相同。clock_t和time_t是兩個用于表示時間的算術類型,而structtm則用于存放日歷時間的各個成分。tm的各個成員的用途及取值范圍如下:
    int tm_sec; /* 秒,0~61 */
int tm_min; /* 分,0~59 */
int tm_hour; /* 時,0~23 */
int tm_mday; /* 日,1~31 */
int tm_mon; /* 月(從1月開始),0~11 */
int tm_year; /* 年(從1900年開始) */
int tm_wday; /* 星期(從周日開始),0~6 */
int tm_yday; /* 天數(shù)(從1月1日開始),0~365 */
int tm_isdst; /* 夏令時標記 */
其中,tm_isdst在使用夏令時時其值為正,在不使用夏令時時其值為0,如果該信息不能使用,其值為負。

10.1 clock

#include <time.h>
clock_t clock(void);
返回程序自開始執(zhí)行到目前為止所占用的處理機時間。如果處理機時間不可使用,那么返回-1。clock()/CLOCKS_PER_SEC是以秒為單位表示的時間。
 

10.2 time

#include <time.h>
time_t time(time_t *tp);
返回當前日歷時間。如果日歷時間不能使用,則返回-1。如果tp不為NULL,那么同時把返回值賦給*tp。
 

10.3 difftime

#include <time.h>
double difftime(time_t time2, time_t time1);
返回time2-time1的值(以秒為單位)。
 

10.4 mktime

#include <time.h>
time_t mktime(struct tm *tp);
將結構*tp中的當?shù)貢r間轉換為time_t類型的日歷時間,并返回該時間。如果不能轉換,則返回-1。
 

10.5 asctime

#include <time.h>
char *asctime(const struct tm *tp);
將結構*tp中的時間轉換成如下所示的字符串形式:
    day month date hours:minutes:seconds year\n\0
如:
    Fri Apr 15 15:14:13 2005\n\0
返回指向該字符串的指針。字符串存儲在可被其他調用重寫的靜態(tài)對象中。
 

10.6 ctime

#include <time.h>
char *ctime(const time_t *tp);
將*tp中的日歷時間轉換為當?shù)貢r間的字符串,并返回指向該字符串指針。字符串存儲在可被其他調用重寫的靜態(tài)對象中。等價于如下調用:
    asctime(localtime(tp))
 

10.7 gmtime

#include <time.h>
struct tm *gmtime(const time_t *tp);
將*tp中的日歷時間轉換成struct tm結構形式的國際標準時間(UTC),并返回指向該結構的指針。如果轉換失敗,返回NULL。結構內容存儲在可被其他調用重寫的靜態(tài)對象中。
 

10.8 localtime

#include <time.h>
struct tm *localtime(const time_t *tp);
將*tp中的日歷時間轉換成struct tm結構形式的本地時間,并返回指向該結構的指針。結構內容存儲在可被其他調用重寫的靜態(tài)對象中。
 

10.9 strftime

#include <time.h>
size_t strftime(char *s, size_t smax, const char *fmt, \
const struct tm *tp);
根據(jù)fmt的格式說明把結構*tp中的日期與時間信息轉換成指定的格式,并存儲到s所指向的數(shù)組中,寫到s中的字符數(shù)不能多于smax。函數(shù)返回實際寫到s中的字符數(shù)(不包括'\0');如果產生的字符數(shù)多于smax,則返回0。
fmt類似于printf()中的格式說明,它由0個或多個轉換規(guī)格說明與普通字符組成。普通字符原封不動的拷貝到s中,每個%c按照下面所描述的格式用與當?shù)丨h(huán)境相適應的值來替換。轉換規(guī)格列表如下:
格式 說明
%a   一星期中各天的縮寫名
%A 一星期中各天的全名
%b 縮寫月份名
%B 月份全名
%c 當?shù)貢r間和日期表示
%d 用整數(shù)表示的一個月中的第幾天(01~31)
%H 用整數(shù)表示的時(24小時制,00~23)
%I 用整數(shù)表示的時(12小時制,01~12)
%j 用整數(shù)表示的一年中各天(001~366)
%m 用整數(shù)表示的月份(01~12)
%M 用整數(shù)表示的分(00~59)
%p 與AM/PM對應的當?shù)乇硎痉椒?/td>
%S 用整數(shù)表示的秒(00~61)
%U 用整數(shù)表示一年中的星期數(shù)(00~53,將星期日看作為每周的第一天)
%w 用整數(shù)表示一周中的各天(0~6,星期日為0)
%W 用整數(shù)表示一年中的星期數(shù)(00~53,將星期一看作為每周的第一天)
%x 當?shù)厝掌诒硎?/td>
%X 當?shù)貢r間表示
%y 不帶公元的年(00~99)
%Y 完整年份表示
%Z 時區(qū)名字(可獲得時)
%% %本身
 
 

11 由實現(xiàn)定義的限制<limits.h>和<float.h>

頭文件<limits.h>中定義了用于表示整類型大小的常量。以下所列的值是可接受的最小值,實際系統(tǒng)中可能有更大的值。
CHAR_BIT 8 char類型的位數(shù)
CHAR_MAX UCHAR_MAXSCHAR_MAX   char類型的最大值
CHAR_MIN 0SCHAR_MIN char類型的最小值
INT_MAX 32767 int類型的最大值
INT_MIN -32767 int類型的最小值
LONG_MAX 2147483647 long的最大值
LONG_MIN -2147483647 long類型的最小值
SCHAR_MAX +127 signed char類型的最大值
SCHAR_MIN -127 signed 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的最大值
 
以下是<float.h>的一個子集,是與浮點算術運算相關的一些常量。給出的每個值代表相應量的一個最小取值。實際實現(xiàn)可以定義適當?shù)闹怠?/div>
FLT_RADIX 2 指數(shù)表示的基數(shù),如2、16
FLT_ROUNDS
加法的浮點舍入規(guī)則
FLT_DIG 6 float類型精度(小數(shù)位數(shù))
FLT_EPSILON 1E-5 使“1.0 + x != 1.0”成立的最小x
FLT_MANT_DIG
基數(shù)為FLT_RADIX的尾數(shù)中的數(shù)字數(shù)
FLT_MAX 1E+37 最大浮點數(shù)
FLT_MAX_EXP
使FLT_RADIXn-1可表示的最大n
FLT_MIN 1E-37 最小的規(guī)范化浮點數(shù)
FLT_MIN_EXP
使10n為規(guī)范化數(shù)的最小n
DBL_DIG 10 double類型精度(小數(shù)位數(shù))
DBL_EPSILON 1E-9 使“1.0 + x != 1.0”成立的最小x
DBL_MANT_DIG
基數(shù)為FLT_RADIX的尾數(shù)中的數(shù)字數(shù)
DBL_MAX 1E+37 最大雙精度浮點數(shù)
DBL_MAX_EXP
使FLT_RADIXn-1可表示的最大n
DBL_MIN 1E-37 最小的規(guī)范化雙精度浮點數(shù)
DBL_MIN_EXP
使10n為規(guī)范化數(shù)的最小n
 

索引:

1 輸入與輸出<stdio.h>
1.1 文件操作
1.1.1 fopen
1.1.2 freopen
1.1.3 fflush
1.1.4 fclose
1.1.5 remove
1.1.6 rename
1.1.7 tmpfile
1.1.8 tmpnam
1.1.9 setvbuf
1.1.10 setbuf
1.2 格式化輸出
1.2.1 fprintf
1.2.2 printf
1.2.3 sprintf
1.2.4 snprintf
1.2.5 vprintf
1.2.6 vfprintf
1.2.7 vsprintf
1.2.8 vsnprintf
1.3 格式化輸入
1.3.1 fscanf
1.3.2 scanf
1.3.3 sscanf
1.4 字符輸入輸出函數(shù)
1.4.1 fgetc
1.4.2 fgets
1.4.3 fputc
1.4.4 fputs
1.4.5 getc
1.4.6 getchar
1.4.7 gets
1.4.8 putc
1.4.9 putchar
1.4.10 puts
1.4.11 ungetc
1.5 直接輸入輸出函數(shù)
1.5.1 fread
1.5.2 fwrite
1.6 文件定位函數(shù)
1.6.1 fseek
1.6.2 ftell
1.6.3 rewind
1.6.4 fgetpos
1.6.5 fsetpos
1.7 錯誤處理函數(shù)
1.7.1 clearerr
1.7.2 feof
1.7.3 ferror
1.7.4 perror
 
2 字符類測試<ctype.h>
2.1 isalnum
2.2 isalpha
2.3 iscntrl
2.4 isdigit
2.5 isgraph
2.6 islower
2.7 isprint
2.8 ispunct
2.9 isspace
2.10 isupper
2.11 isxdigit
2.12 tolower
2.13 toupper
 
3 字符串函數(shù)<string.h>
3.1 strcpy
3.2 strncpy
3.3 strcat
3.4 strncat
3.5 strcmp
3.6 strncmp
3.7 strchr
3.8 strrchr
3.9 strspn
3.10 strcspn
3.11 strpbrk
3.12 strstr
3.13 strlen
3.14 strerror
3.15 strtok
3.16 memcpy
3.17 memmove
3.18 memcmp
3.19 memchr
3.20 memset
 
4 數(shù)學函數(shù)<math.h>
4.1 sin
4.2 cos
4.3 tan
4.4 asin
4.5 acos
4.6 atan
4.7 atan2
4.8 sinh
4.9 cosh
4.10 tanh
4.11 exp
4.12 log
4.13 log10
4.14 pow
4.15 sqrt
4.16 ceil
4.17 floor
4.18 fabs
4.19 ldexp
4.20 frexp
4.21 modf
4.22 fmod
 
5 實用函數(shù)<stdlib.h>
5.1 atof
5.2 atoi
5.3 atol
5.4 strtod
5.5 strtol
5.6 strtoul
5.7 rand
5.8 srand
5.9 calloc
5.10 malloc
5.11 realloc
5.12 free
5.13 abort
5.14 exit
5.15 atexit
5.16 system
5.17 getenv
5.18 bsearch
5.19 qsort
5.20 abs
5.21 labs
5.22 div
5.23 ldiv
 
6 診斷<assert.h>
6.1 assert
 
7 變長變元表<stdarg.h>
7.1 va_start
7.2 va_arg
7.3 va_end
 
8 非局部跳轉<setjmp.h>
8.1 setjmp
8.2 longjmp
 
9 信號處理<signal.h>
9.1 signal
9.2 raise
 
10 日期與時間函數(shù)<time.h>
10.1 clock
10.2 time
10.3 difftime
10.4 mktime
10.5 asctime
10.6 ctime
10.7 gmtime
10.8 localtime
10.9 strftime
 
11 由實現(xiàn)定義的限制<limits.h> and <float.h>
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服