庫(kù)函數(shù)并不是C語(yǔ)言的一部分,它是由編譯程序根據(jù)一般用戶的需要編制并提供用戶使用的一組程序。每一種C編譯系統(tǒng)都提供了一批庫(kù)函數(shù),不同的編譯系統(tǒng)所提供的庫(kù)函數(shù)的數(shù)目和函數(shù)名以及函數(shù)功能是不完全相同的。ANSIC標(biāo)準(zhǔn)提出了一批建議提供的標(biāo)準(zhǔn)庫(kù)函數(shù)。它包括了目前多數(shù)C編譯系統(tǒng)所提供的庫(kù)函數(shù),但也有一些是某些C編譯系統(tǒng)未曾實(shí)現(xiàn)的??紤]到通用性,本書列出Turbo C 2.0版提供的部分常用庫(kù)函數(shù)。
在陽(yáng)泉等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都營(yíng)銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,陽(yáng)泉網(wǎng)站建設(shè)費(fèi)用合理。
由于Turbo C庫(kù)函數(shù)的種類和數(shù)目很多(例如:還有屏幕和圖形函數(shù)、時(shí)間日期函數(shù)、與本系統(tǒng)有關(guān)的函數(shù)等,每一類函數(shù)又包括各種功能的函數(shù)),限于篇幅,本附錄不能全部介紹,只從教學(xué)需要的角度列出最基本的。讀者在編制c程序時(shí)可能要用到更多的函數(shù),請(qǐng)查閱有關(guān)的Turbo C庫(kù)函數(shù)手冊(cè)。
(1)數(shù)學(xué)函數(shù)
使用數(shù)學(xué)函數(shù)時(shí),應(yīng)該在源文件中使用命令:
#include″math.h″
函數(shù)名 函數(shù)與形參類型 功 能 返回值
acos double acos(x)
double x 計(jì)算cos-1(x)的值
-1=x=1 計(jì)算結(jié)果
asin double asin(x)
double x 計(jì)算sin-1(x)的值
-1=x=1 計(jì)算結(jié)果
atan double atan(x)
double x 計(jì)算tan-1(x)的值 計(jì)算結(jié)果
atan2 double atan2(x,y)
double x,y 計(jì)算tan-1(x/y)的值 計(jì)算結(jié)果
cos double cos(x)
double x 計(jì)算cos(x)的值
x的單位為弧度 計(jì)算結(jié)果
cosh double cosh(x)
double x 計(jì)算x的雙曲余弦cosh(x)的值 計(jì)算結(jié)果
exp double exp(x)
double x 求ex的值 計(jì)算結(jié)果
fabs double fabs(x)
double x 求x的絕對(duì)值 計(jì)算結(jié)果
floor double floor(x)
double x 求出不大于x的最大整數(shù) 該整數(shù)的雙精度實(shí)數(shù)
fmod double fmod(x,y)
double x,y 求整除x/y的余數(shù) 返回余數(shù)的雙精度實(shí)數(shù)
frexp double frexp(val,eptr)
double val
int *eptr 把雙精度數(shù)val分解成數(shù)字部分(尾數(shù))和以2為底的指數(shù),即val=x*2n,n存放在eptr指向的變量中 數(shù)字部分x
0.5=x1
log double log(x)
double x 求logex即lnx 計(jì)算結(jié)果
log10 double log10(x)
double x 求log10x 計(jì)算結(jié)果
modf double modf(val,iptr)
double val
int *iptr 把雙精度數(shù)val分解成數(shù)字部分和小數(shù)部分,把整數(shù)部分存放在ptr指向的變量中 val的小數(shù)部分
pow double pow(x,y)
double x,y 求xy的值 計(jì)算結(jié)果
sin double sin(x)
double x 求sin(x)的值
x的單位為弧度 計(jì)算結(jié)果
sinh double sinh(x)
double x 計(jì)算x的雙曲正弦函數(shù)sinh(x)的值 計(jì)算結(jié)果
sqrt double sqrt (x)
double x 計(jì)算√x,x≧0 計(jì)算結(jié)果
tan double tan(x)
double x 計(jì)算tan(x)的值
x的單位為弧度 計(jì)算結(jié)果
tanh double tanh(x)
double x 計(jì)算x的雙曲正切函數(shù)tanh(x)的值 計(jì)算結(jié)果
------------------------------------------------------------------------------------------------------------------------------
(2)字符函數(shù)
在使用字符函數(shù)時(shí),因該在源文件中使用命令:
#include“ctype.h”
函數(shù)名 函數(shù)和形參類型 功能 返回值
isalnum int isalnum(ch)
int ch 檢查ch是否字母或數(shù)字 是字母或數(shù)字返回1;否則返回0
isalpha int isalpha(ch)
int ch 檢查ch是否字母 是字母返回1;否則返回0
iscntrl int iscntrl(ch)
int ch 檢查ch是否控制字符(其ASCⅡ碼在0和0xlF之間) 是控制字符返回1;否則返回0
isdigit int isdigit(ch)
int ch 檢查ch是否數(shù)字 是數(shù)字返回1;否則返回0
isgraph int isgraph(ch)
int ch 檢查ch是否是可打印字符(其ASCⅡ碼在0x21和0x7e之間),不包括空格 是可打印字符返回1;否則返回0
islower int islower(ch)
int ch 檢查ch是否是小寫字母
(a~z) 是小字母返回1;否則返回0
isprint int isprint(ch)
int ch 檢查ch是否是可打印字符(其ASCⅡ碼在0x21和0x7e之間),不包括空格 是可打印字符返回1;否則返回0
ispunct int ispunct(ch)
int ch 檢查ch是否是標(biāo)點(diǎn)字符(不包括空格)即除字母、數(shù)字和空格以外的所有可打印字符 是標(biāo)點(diǎn)返回1;否則返回0
isspace int isspace(ch)
int ch 檢查ch是否空格、跳格符(制表符)或換行符 是,返回1;否則返回0
issupper int isalsupper(ch)
int ch 檢查ch是否大寫字母
(A~Z) 是大寫字母返回1;否則返回0
isxdigit int isxdigit(ch)
int ch 檢查ch是否一個(gè)16進(jìn)制數(shù)字
(即0~9,或A到F,a~f) 是,返回1;否則返回0
tolower int tolower(ch)
int ch 將ch字符轉(zhuǎn)換為小寫字母 返回ch對(duì)應(yīng)的小寫字母
toupper int toupper(ch)
int ch 將ch字符轉(zhuǎn)換為大寫字母 返回ch對(duì)應(yīng)的大寫字母
-----------------------------------------------------------------------------------------------------------------------
(3)字符串函數(shù)
使用字符串中函數(shù)時(shí),應(yīng)該在源文件中使用命令:
#include“string.h”
函數(shù)名 函數(shù)和形參類型 功能 返回值
memchr void memchr(buf,ch,count)
void *buf;charch;
unsigned int count; 在buf的前count個(gè)字符里搜索字符ch首次出現(xiàn)的位置 返回指向buf中ch的第一次出現(xiàn)的位置指針;若沒有找到ch,返回NULL
memcmp int memcmp(buf1,buf2,count)
void *buf1,*buf2;
unsigned int count; 按字典順序比較由buf1和buf2指向的數(shù)組的前count個(gè)字符 buf1buf2,為負(fù)數(shù)
buf1=buf2,返回0
buf1buf2,為正數(shù)
memcpy void *memcpy(to,from,count)
void *to,*from;
unsigned int count; 將from指向的數(shù)組中的前count個(gè)字符拷貝到to指向的數(shù)組中。From和to指向的數(shù)組不允許重疊 返回指向to的指針
memove void *memove(to,from,count)
void *to,*from;
unsigned int count; 將from指向的數(shù)組中的前count個(gè)字符拷貝到to指向的數(shù)組中。From和to指向的數(shù)組不允許重疊 返回指向to的指針
memset void *memset(buf,ch,count)
void *buf;char ch;
unsigned int count; 將字符ch拷貝到buf指向的數(shù)組前count個(gè)字符中。 返回buf
strcat char *strcat(str1,str2)
char *str1,*str2; 把字符str2接到str1后面,取消原來str1最后面的串結(jié)束符`\0` 返回str1
strchr char *strchr(str1,ch)
char *str;
int ch; 找出str指向的字符串中第一次出現(xiàn)字符ch的位置 返回指向該位置的指針,如找不到,則應(yīng)返回NULL
strcmp int *strcmp(str1,str2)
char *str1,*str2; 比較字符串str1和str2 str1str2,為負(fù)數(shù)
str1=str2,返回0
str1str2,為正數(shù)
strcpy char *strcpy(str1,str2)
char *str1,*str2; 把str2指向的字符串拷貝到str1中去 返回str1
strlen unsigned intstrlen(str)
char *str; 統(tǒng)計(jì)字符串str中字符的個(gè)數(shù)(不包括終止符`\0`) 返回字符個(gè)數(shù)
strncat char *strncat(str1,str2,count)
char *str1,*str2;
unsigned int count; 把字符串str2指向的字符串中最多count個(gè)字符連到串str1后面,并以null結(jié)尾 返回str1
strncmp int strncmp(str1,str2,count)
char *str1,*str2;
unsigned int count; 比較字符串str1和str2中至多前count個(gè)字符 str1str2,為負(fù)數(shù)
str1=str2,返回0
str1str2,為正數(shù)
strncpy char *strncpy(str1,str2,count)
char *str1,*str2;
unsigned int count; 把str2指向的字符串中最多前count個(gè)字符拷貝到串str1中去 返回str1
strnset void *setnset(buf,ch,count)
char *buf;char ch;
unsigned int count; 將字符ch拷貝到buf指向的數(shù)組前count個(gè)字符中。 返回buf
strset void *setnset(buf,ch)
void *buf;char ch; 將buf所指向的字符串中的全部字符都變?yōu)樽址鹀h 返回buf
strstr char *strstr(str1,str2)
char *str1,*str2; 尋找str2指向的字符串在str1指向的字符串中首次出現(xiàn)的位置 返回str2指向的字符串首次出向的地址。否則返回NULL
-----------------------------------------------------------------------------------------------------------------------------
(4)輸入輸出函數(shù)
在使用輸入輸出函數(shù)時(shí),應(yīng)該在源文件中使用命令:
#include“stdio.h”
函數(shù)名 函數(shù)和形參類型 功能 返回值
clearerr void clearer(fp)
FILE *fp 清除文件指針錯(cuò)誤指示器 無
close int close(fp)
int fp 關(guān)閉文件(非ANSI標(biāo)準(zhǔn)) 關(guān)閉成功返回0,不成功返回-1
creat int creat(filename,mode)
char *filename;
int mode 以mode所指定的方式建立文件。(非ANSI標(biāo)準(zhǔn)) 成功返回正數(shù),
否則返回-1
eof int eof(fp)
int fp 判斷fp所指的文件是否結(jié)束 文件結(jié)束返回1,
否則返回0
fclose int fclose(fp)
FILE *fp 關(guān)閉fp所指的文件,釋放文件緩沖區(qū) 關(guān)閉成功返回0,不成功返回非0
feof int feof(fp)
FILE *fp 檢查文件是否結(jié)束 文件結(jié)束返回非0,否則返回0
ferror int ferror(fp)
FILE *fp 測(cè)試fp所指的文件是否有錯(cuò)誤 無錯(cuò)返回0;
否則返回非0
fflush int fflush(fp)
FILE *fp 將fp所指的文件的全部控制信息和數(shù)據(jù)存盤 存盤正確返回0;
否則返回非0
fgets char *fgets(buf,n,fp) char *buf;int n;
FILE *fp 從fp所指的文件讀取一個(gè)長(zhǎng)度為(n-1)的字符串,存入起始地址為buf的空間 返回地址buf;若遇文件結(jié)束或出錯(cuò)則返回EOF
fgetc int fgetc(fp)
FILE *fp 從fp所指的文件中取得下一個(gè)字符 返回所得到的字符;出錯(cuò)返回EOF
fopen FILE *fopen(filename,mode)
char *filename,*mode 以mode指定的方式打開名為filename的文件 成功,則返回一個(gè)文件指針;否則返回0
fprintf int fprintf(fp,format,args,…)
FILE *fp;char *format 把a(bǔ)rgs的值以format指定的格式輸出到fp所指的文件中 實(shí)際輸出的字符數(shù)
fputc int fputc(ch,fp)
char ch;FILE *fp 將字符ch輸出到fp所指的文件中 成功則返回該字符;出錯(cuò)返回EOF
fputs int fputs(str,fp)
char str;FILE *fp 將str指定的字符串輸出到fp所指的文件中 成功則返回0;出錯(cuò)返回EOF
fread int fread(pt,size,n,fp) char *pt;unsigned size,n;FILE *fp 從fp所指定文件中讀取長(zhǎng)度為size的n個(gè)數(shù)據(jù)項(xiàng),存到pt所指向的內(nèi)存區(qū) 返回所讀的數(shù)據(jù)項(xiàng)個(gè)數(shù),若文件結(jié)束或出錯(cuò)返回0
fscanf int fscanf(fp,format,args,…)
FILE *fp;char *format 從fp指定的文件中按給定的format格式將讀入的數(shù)據(jù)送到args所指向的內(nèi)存變量中(args是指針) 以輸入的數(shù)據(jù)個(gè)數(shù)
fseek int fseek(fp,offset,base)
FILE *fp;long offset;int base 將fp指定的文件的位置指針移到base所指出的位置為基準(zhǔn)、以offset為位移量的位置 返回當(dāng)前位置;否則,返回-1
siell FILE *fp;
long ftell(fp); 返回fp所指定的文件中的讀寫位置 返回文件中的讀寫位置;否則,返回0
fwrite int fwrite(ptr,size,n,fp) char *ptr;unsigned size,n;FILE *fp 把ptr所指向的n*size個(gè)字節(jié)輸出到fp所指向的文件中 寫到fp文件中的數(shù)據(jù)項(xiàng)的個(gè)數(shù)
getc int getc(fp)
FILE *fp; 從fp所指向的文件中的讀出下一個(gè)字符 返回讀出的字符;若文件出錯(cuò)或結(jié)束返回EOF
getchar int getchat() 從標(biāo)準(zhǔn)輸入設(shè)備中讀取下一個(gè)字符 返回字符;若文件出錯(cuò)或結(jié)束返回-1
gets char *gets(str)
char *str 從標(biāo)準(zhǔn)輸入設(shè)備中讀取字符串存入str指向的數(shù)組 成功返回str,否則返回NULL
open int open(filename,mode) char *filename;
int mode 以mode指定的方式打開已存在的名為filename的文件
(非ANSI標(biāo)準(zhǔn)) 返回文件號(hào)(正數(shù));如打開失敗返回-1
printf int printf(format,args,
…)
char *format 在format指定的字符串的控制下,將輸出列表args的指輸出到標(biāo)準(zhǔn)設(shè)備 輸出字符的個(gè)數(shù);若出錯(cuò)返回負(fù)數(shù)
prtc int prtc(ch,fp)
int ch;FILE *fp; 把一個(gè)字符ch輸出到fp所值的文件中 輸出字符ch;若出錯(cuò)返回EOF
putchar int putchar(ch)
char ch; 把字符ch輸出到fp標(biāo)準(zhǔn)輸出設(shè)備 返回?fù)Q行符;若失敗返回EOF
puts int puts(str)
char *str; 把str指向的字符串輸出到標(biāo)準(zhǔn)輸出設(shè)備;將`\0`轉(zhuǎn)換為回車行 返回?fù)Q行符;若失敗返回EOF
putw int putw(w,fp)
int i;
FILE *fp; 將一個(gè)整數(shù)i(即一個(gè)字)寫到fp所指的文件中
(非ANSI標(biāo)準(zhǔn)) 返回讀出的字符;若文件出錯(cuò)或結(jié)束返回EOF
read int read(fd,buf,count) int fd;char *buf;
unsigned int count; 從文件號(hào)fp所指定文件中讀count個(gè)字節(jié)到由buf知識(shí)的緩沖區(qū)(非ANSI標(biāo)準(zhǔn)) 返回真正讀出的字節(jié)個(gè)數(shù),如文件結(jié)束返回0,出錯(cuò)返回-1
remove int remove(fname)
char *fname; 刪除以fname為文件名的文件 成功返回0;出錯(cuò)返回-1
rename int remove(oname,nname)
char *oname,*nname; 把oname所指的文件名改為由nname所指的文件名 成功返回0;出錯(cuò)返回-1
rewind void rewind(fp)
FILE *fp; 將fp指定的文件指針置于文件頭,并清除文件結(jié)束標(biāo)志和錯(cuò)誤標(biāo)志 無
scanf int scanf(format,args,
…)
char *format 從標(biāo)準(zhǔn)輸入設(shè)備按format指示的格式字符串規(guī)定的格式,輸入數(shù)據(jù)給args所指示的單元。args為指針 讀入并賦給args數(shù)據(jù)個(gè)數(shù)。如文件結(jié)束返回EOF;若出錯(cuò)返回0
write int write(fd,buf,count) int fd;char *buf;
unsigned count; 叢buf指示的緩沖區(qū)輸出count個(gè)字符到fd所指的文件中(非ANSI標(biāo)準(zhǔn)) 返回實(shí)際寫入的字節(jié)數(shù),如出錯(cuò)返回-1
------------------------------------------------------------------------------------------------------------------------------
(5)動(dòng)態(tài)存儲(chǔ)分配函數(shù)
在使用動(dòng)態(tài)存儲(chǔ)分配函數(shù)時(shí),應(yīng)該在源文件中使用命令:
#include“stdlib.h”
函數(shù)名 函數(shù)和形參類型 功能 返回值
callloc void *calloc(n,size)
unsigned n;
unsigned size; 分配n個(gè)數(shù)據(jù)項(xiàng)的內(nèi)存連續(xù)空間,每個(gè)數(shù)據(jù)項(xiàng)的大小為size 分配內(nèi)存單元的起始地址。如不成功,返回0
free void free(p)
void *p; 釋放p所指內(nèi)存區(qū) 無
malloc void *malloc(size)
unsigned SIZE; 分配size字節(jié)的內(nèi)存區(qū) 所分配的內(nèi)存區(qū)地址,如內(nèi)存不夠,返回0
realloc void *reallod(p,size)
void *p;
unsigned size; 將p所指的以分配的內(nèi)存區(qū)的大小改為size。Size可以比原來分配的空間大或小 返回指向該內(nèi)存區(qū)的指針。若重新分配失敗,返回NULL
-------------------------------------------------------------------------------------------------------------------------------
(6)其他函數(shù)
“其他函數(shù)”是C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù),由于不便歸入某一類,所以單獨(dú)列出。使用這寫函數(shù)時(shí),應(yīng)該在源文件中使用命令:
#include“stdlib.h”
函數(shù)名 函數(shù)和形參類型 功能 返回值
abs int abs(num)
int num 計(jì)算整數(shù)num的絕對(duì)值 返回計(jì)算結(jié)果
atof double atof(str)
char *str 將str指向的字符串轉(zhuǎn)換為一個(gè)double型的值 返回雙精度計(jì)算結(jié)果
atoi int atoi(str)
char *str 將str指向的字符串轉(zhuǎn)換為一個(gè)int型的值 返回轉(zhuǎn)換結(jié)果
atol long atol(str)
char *str 將str指向的字符串轉(zhuǎn)換為一個(gè)long型的值 返回轉(zhuǎn)換結(jié)果
exit void exit(status)
int status; 中止程序運(yùn)行。將status的值返回調(diào)用的過程 無
itoa char *itoa(n,str,radix)
int n,radix;
char *str 將整數(shù)n的值按照radix進(jìn)制轉(zhuǎn)換為等價(jià)的字符串,并將結(jié)果存入str指向的字符串中 返回一個(gè)指向str的指針
labs long labs(num)
long num 計(jì)算c整數(shù)num的絕對(duì)值 返回計(jì)算結(jié)果
ltoa char *ltoa(n,str,radix)
long int n;int radix;
char *str; 將長(zhǎng)整數(shù)n的值按照radix進(jìn)制轉(zhuǎn)換為等價(jià)的字符串,并將結(jié)果存入str指向的字符串 返回一個(gè)指向str的指針
rand int rand() 產(chǎn)生0到RAND_MAX之間的偽隨機(jī)數(shù)。RAND_MAX在頭文件中定義 返回一個(gè)偽隨機(jī)(整)數(shù)
random int random(num)
int num; 產(chǎn)生0到num之間的隨機(jī)數(shù)。 返回一個(gè)隨機(jī)(整)數(shù)
rand_omize void randomize() 初始化隨機(jī)函數(shù),使用是包括頭文件time.h。
strtod double strtod(start,end)
char *start;
char **end 將start指向的數(shù)字字符串轉(zhuǎn)換成double,直到出現(xiàn)不能轉(zhuǎn)換為浮點(diǎn)的字符為止,剩余的字符串符給指針end
*HUGE_VAL是turboC在頭文件math.H中定義的數(shù)學(xué)函數(shù)溢出標(biāo)志值 返回轉(zhuǎn)換結(jié)果。若為轉(zhuǎn)換則返回0。若轉(zhuǎn)換出錯(cuò)返回HUGE_VAL表示上溢,或返回-HUGE_VAL表示下溢
strtol Long int strtol(start,end,radix)
char *start;
char **end;
int radix; 將start指向的數(shù)字字符串轉(zhuǎn)換成long,直到出現(xiàn)不能轉(zhuǎn)換為長(zhǎng)整形數(shù)的字符為止,剩余的字符串符給指針end。
轉(zhuǎn)換時(shí),數(shù)字的進(jìn)制由radix
確定。
*LONG_MAX是turboC在頭文件limits.h中定義的long型可表示的最大值 返回轉(zhuǎn)換結(jié)果。若為轉(zhuǎn)換則返回0。若轉(zhuǎn)換出錯(cuò)返回LONG_MAX表示上溢,或返回-LONG_MAX表示下溢
system int system(str)
char *str; 將str指向的字符串作為命令傳遞給DOS的命令處理器 返回所執(zhí)行命令的退出狀態(tài)
函數(shù)是數(shù)學(xué)名詞,代數(shù)式中,凡相關(guān)的兩數(shù)X與Y,對(duì)于每個(gè)X值,都只有一個(gè)Y的對(duì)應(yīng)值。這種對(duì)應(yīng)關(guān)系就表示Y是X的函數(shù)。
函數(shù)(function)的定義通常分為傳統(tǒng)定義和近代定義,函數(shù)的兩個(gè)定義本質(zhì)是相同的,只是敘述概念的出發(fā)點(diǎn)不同,傳統(tǒng)定義是從運(yùn)動(dòng)變化的觀點(diǎn)出發(fā),而近代定義是從集合、映射的觀點(diǎn)出發(fā)。
函數(shù)的近代定義是給定一個(gè)數(shù)集A,假設(shè)其中的元素為x,對(duì)A中的元素x施加對(duì)應(yīng)法則f,記作f(x),得到另一數(shù)集B,假設(shè)B中的元素為y,則y與x之間的等量關(guān)系可以用y=f(x)表示,函數(shù)概念含有三個(gè)要素:定義域A、值域B和對(duì)應(yīng)法則f。其中核心是對(duì)應(yīng)法則f,它是函數(shù)關(guān)系的本質(zhì)特征。
函數(shù),最早由中國(guó)清朝數(shù)學(xué)家李善蘭翻譯,出于其著作《代數(shù)學(xué)》。之所以這么翻譯,他給出的原因是“凡此變數(shù)中函彼變數(shù)者,則此為彼之函數(shù)”,也即函數(shù)指一個(gè)量隨著另一個(gè)量的變化而變化,或者說一個(gè)量。
一、格式化輸入輸出函數(shù)格式:
在Turbo C中格式字符串的一般形式為: [標(biāo)志][輸出最小寬度][.精度][長(zhǎng)度]類型 其中方括號(hào)[]中的項(xiàng)為可選項(xiàng)。各項(xiàng)的意義介紹如下:
1.類型類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義下表所示:
表示輸出類型的格式字符 格式字符意義
d 以十進(jìn)制形式輸出帶符號(hào)整數(shù)(正數(shù)不輸出符號(hào))
o 以八進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴O)
x 以十六進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴OX)
u 以十進(jìn)制形式輸出無符號(hào)整數(shù)
f 以小數(shù)形式輸出單、雙精度實(shí)數(shù)
e 以指數(shù)形式輸出單、雙精度實(shí)數(shù)
g 以%f%e中較短的輸出寬度輸出單、雙精度實(shí)數(shù)
c 輸出單個(gè)字符
s 輸出字符串
2.標(biāo)志
標(biāo)志字符為-、+、#、空格四種,其意義下表所示:
標(biāo)志格式字符 標(biāo) 志 意 義
- 結(jié)果左對(duì)齊,右邊填空格
+ 輸出符號(hào)(正號(hào)或負(fù)號(hào))空格輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào)
# 對(duì)c,s,d,u類無影響;對(duì)o類, 在輸出時(shí)加前
綴o 對(duì)x類,在輸出時(shí)加前綴0x;對(duì)e,g,f 類當(dāng)結(jié)果有小數(shù)時(shí)才給出小數(shù)點(diǎn)
3.輸出最小寬度
用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)。 若實(shí)際位數(shù)多于定義的寬度,則按實(shí)際位數(shù)輸出, 若實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格或0。
4.精度
精度格式符以“.”開頭,后跟十進(jìn)制整數(shù)。本項(xiàng)的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符, 則表示輸出字符的個(gè)數(shù);若實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過的部分。
5.長(zhǎng)度
長(zhǎng)度格式符為h,l兩種,h表示按短整型量輸出,l表示按長(zhǎng)整型量輸出。
二、字符處理函數(shù)
字符輸出:putchar(ch)
字符輸入:getchar()
三、字符串處理:
字符串輸出:puts(char *)
字符串輸入:gets(char *)
測(cè)試字符串長(zhǎng)度:strlen(char *)
字符串復(fù)制函數(shù):strcpy(char *,char *)
字符串比較:strcmp(char *str1,char *str2) [返回值:return str1-str2]
字符串連接:strcat(char *,char *)
四、常用轉(zhuǎn)換函數(shù)"math.h"
double atof(char *x)
int atoi(char *X)
五、常用字符處理函數(shù)"ctype.h"
int isalpha(int x)
int islower(int x)
int isupper(int x)
int isdigit(int x)
int toupper(int x)
int tolower(int x)
int toascii(int x)
六、隨機(jī)數(shù)"stdlib.h"
void randomize() /*對(duì)隨機(jī)數(shù)發(fā)生器進(jìn)行初始化*/
int random(int num) /*隨機(jī)數(shù)發(fā)生函數(shù)*/
許多程序設(shè)計(jì)語(yǔ)言中,可以將一段經(jīng)常需要使用的代碼封裝起來,在需要使用時(shí)可以直接調(diào)用,這就是程序中的函數(shù)。如C語(yǔ)言中:int max(int x,int y){return(xy?x:y;);}就是一段比較兩數(shù)大小的函數(shù),函數(shù)有參數(shù)與返回值。C++程序設(shè)計(jì)中的函數(shù)可以分為兩類:帶參數(shù)的函數(shù)和不帶參數(shù)的函數(shù)。這兩種參數(shù)的聲明、定義也不一樣。 帶有(一個(gè))參數(shù)的函數(shù)的聲明:類型名標(biāo)示符+函數(shù)名+(類型標(biāo)示符+參數(shù)){}不帶參數(shù)的函數(shù)的聲明:void+函數(shù)名( ){
}花括號(hào)內(nèi)為函數(shù)體。帶參數(shù)的函數(shù)有返回值,不帶參數(shù)的沒有返回值。 C++中函數(shù)的調(diào)用:函數(shù)必須聲明后才可以被調(diào)用。調(diào)用格式為:函數(shù)名(實(shí)參)調(diào)用時(shí)函數(shù)名后的小括號(hào)中的實(shí)參必須和聲明函數(shù)時(shí)的函數(shù)括號(hào)中的形參個(gè)數(shù)相同。有返回值的函數(shù)可以進(jìn)行計(jì)算,也可以做為右值進(jìn)行賦值。 C語(yǔ)言中的部分函數(shù):main(主函數(shù))max(求最大數(shù)的函數(shù))scanf(輸入函數(shù))printf(輸出函數(shù))
執(zhí)行fun (a,10)
對(duì)于fun
如果n為1 直接返回t[0]
否則 傳入同一個(gè)指針t, n自減。
其實(shí)就是無論n是多少 都會(huì)遞歸自減到1
返回的 就是a[0]
也就是11
輸出11
C語(yǔ)言輸入輸出函數(shù)有很多,標(biāo)準(zhǔn)I/O函數(shù)中包含了如下幾個(gè)常用的函數(shù):
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int getc(FILE *fp)
getc主要是從文件中讀出一個(gè)字符.常用的判斷文件是否讀取結(jié)束的語(yǔ)句為 (ch = getc(fp)) != EOF.EOF為文件結(jié)束標(biāo)志,定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當(dāng)fp為stdin時(shí),getc(stdin)就等同于getchar()了.
int putc(int ch,FILE *fp)
putc主要是把字符ch寫到文件fp中去.如果fp為stdout,則putc就等同于putchar()了.
int getchar(void)
getchar主要是從標(biāo)準(zhǔn)輸入流讀取一個(gè)字符.默認(rèn)的標(biāo)準(zhǔn)輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字符時(shí)又涉及到緩沖的問題,所以并不是在屏幕中敲上一個(gè)字符程序就會(huì)運(yùn)行,一般是通過在屏幕上敲上回車鍵,然后將回車前的字符串放在緩沖區(qū)中,getchar就是在緩沖區(qū)中一個(gè)一個(gè)的讀字符.當(dāng)然也可以在while循環(huán)中指定終止字符,如下面的語(yǔ)句:while ((c = getchar()) != '#')這是以#來結(jié)束的.
int putchar(int ch)
putchar(ch)主要是把字符ch寫到標(biāo)準(zhǔn)流stdout中去.
char * gets(char *str)
gets主要是從標(biāo)準(zhǔn)輸入流讀取字符串并回顯,讀到換行符時(shí)退出,并會(huì)將換行符省去.
int puts(char *str)
puts主要是把字符串str寫到標(biāo)準(zhǔn)流stdout中去,并會(huì)在輸出到最后時(shí)添加一個(gè)換行符.
char *fgets(char *str, int num, FILE *fp)
str是存放讀入的字符數(shù)組指針,num是最大允許的讀入字符數(shù),fp是文件指針.fgets的功能是讀一行字符,該行的字符數(shù)不大于num-1.因?yàn)閒gets函數(shù)會(huì)在末尾加上一個(gè)空字符以構(gòu)成一個(gè)字符串.另外fgets在讀取到換行符后不會(huì)將其省略.
int fputs(char *str, file *fp)
fputs將str寫入fp.fputs與puts的不同之處是fputs在打印時(shí)并不添加換行符.
int fgetc(FILE *fp)
fgetc從fp的當(dāng)前位置讀取一個(gè)字符.
int fputc(int ch, file *fp)
fputc是將ch寫入fp當(dāng)前指定位置.
int fscanf(FILE *fp, char *format, 輸入列表)
fscanf按照指定格式從文件中出讀出數(shù)據(jù),并賦值到參數(shù)列表中.
int fprintf(FILE *fp, char *format, 輸出列表)
fprintf將格式化數(shù)據(jù)寫入流式文件中.
數(shù)據(jù)塊讀寫函數(shù)
fread (buffer,size,count,fp);
fwrite(buffer,size,count,fp);
參數(shù)說明:
buffer:是一個(gè)指針。
對(duì)fread 來說,它是讀入數(shù)據(jù)的存放地址。
對(duì)fwrite來說,是要輸出數(shù)據(jù)的地址(均指起始地址)。
size: 要讀寫的字節(jié)數(shù)。
count: 要進(jìn)行讀寫多少個(gè)size字節(jié)的數(shù)據(jù)項(xiàng)。
fp: 文件型指針。