A. c語言中有哪些函數
C語言輸入輸出函數有很多,標准I/O函數中包含了如下幾個常用的函數:
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int
getc(FILE
*fp)
getc主要是從文件中讀出一個字元.常用的判斷文件是否讀取結束的語句為
(ch
=
getc(fp))
!=
EOF.EOF為文件結束標志,定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當fp為stdin時,getc(stdin)就等同於getchar()了.
int
putc(int
ch,FILE
*fp)
putc主要是把字元ch寫到文件fp中去.如果fp為stdout,則putc就等同於putchar()了.
int
getchar(void)
getchar主要是從標准輸入流讀取一個字元.默認的標准輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字元時又涉及到緩沖的問題,所以並不是在屏幕中敲上一個字元程序就會運行,一般是通過在屏幕上敲上回車鍵,然後將回車前的字元串放在緩沖區中,getchar就是在緩沖區中一個一個的讀字元.當然也可以在while循環中指定終止字元,如下面的語句:while
((c
=
getchar())
!=
'#')這是以#來結束的.
int
putchar(int
ch)
putchar(ch)主要是把字元ch寫到標准流stdout中去.
char
*
gets(char
*str)
gets主要是從標准輸入流讀取字元串並回顯,讀到換行符時退出,並會將換行符省去.
int
puts(char
*str)
puts主要是把字元串str寫到標准流stdout中去,並會在輸出到最後時添加一個換行符.
char
*fgets(char
*str,
int
num,
FILE
*fp)
str是存放讀入的字元數組指針,num是最大允許的讀入字元數,fp是文件指針.fgets的功能是讀一行字元,該行的字元數不大於num-1.因為fgets函數會在末尾加上一個空字元以構成一個字元串.另外fgets在讀取到換行符後不會將其省略.
int
fputs(char
*str,
file
*fp)
fputs將str寫入fp.fputs與puts的不同之處是fputs在列印時並不添加換行符.
int
fgetc(FILE
*fp)
fgetc從fp的當前位置讀取一個字元.
int
fputc(int
ch,
file
*fp)
fputc是將ch寫入fp當前指定位置.
int
fscanf(FILE
*fp,
char
*format,
輸入列表)
fscanf按照指定格式從文件中出讀出數據,並賦值到參數列表中.
int
fprintf(FILE
*fp,
char
*format,
輸出列表)
fprintf將格式化數據寫入流式文件中.
數據塊讀寫函數
fread
(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
參數說明:
buffer:是一個指針。
對fread
來說,它是讀入數據的存放地址。
對fwrite來說,是要輸出數據的地址(均指起始地址)。
size:
要讀寫的位元組數。
count:
要進行讀寫多少個size位元組的數據項。
fp:
文件型指針。
B. c語言到底有多少種函數
分類函數,所在函數庫為ctype.h
int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否則返回0
int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數字('0'-'9')
返回非0值,否則返回0
int isascii(int ch) 若ch是字元(ASCII碼中的0-127)返回非0值,否則返回0
int iscntrl(int ch) 若ch是作廢字元(0x7F)或普通控制字元(0x00-0x1F)
返回非0值,否則返回0
int isdigit(int ch) 若ch是數字('0'-'9')返回非0值,否則返回0
int isgraph(int ch) 若ch是可列印字元(不含空格)(0x21-0x7E)返回非0值,否則返回0
int islower(int ch) 若ch是小寫字母('a'-'z')返回非0值,否則返回0
int isprint(int ch) 若ch是可列印字元(含空格)(0x20-0x7E)返回非0值,否則返回0
int ispunct(int ch) 若ch是標點字元(0x00-0x1F)返回非0值,否則返回0
int isspace(int ch) 若ch是空格(' '),水平製表符('\t'),回車符('\r'),
走紙換行('\f'),垂直製表符('\v'),換行符('\n')
返回非0值,否則返回0
int isupper(int ch) 若ch是大寫字母('A'-'Z')返回非0值,否則返回0
int isxdigit(int ch) 若ch是16進制數('0'-'9','A'-'F','a'-'f')返回非0值,
否則返回0
int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應的小寫字母('a'-'z')
int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應的大寫字母('A'-'Z')
int abs(int i) 返回整型參數i的絕對值
double cabs(struct complex znum) 返回復數znum的絕對值
double fabs(double x) 返回雙精度參數x的絕對值
long labs(long n) 返回長整型參數n的絕對值
double exp(double x) 返回指數函數ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存貯在eptr中
double ldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回x的開方
double acos(double x) 返回x的反餘弦cos-1(x)值,x為弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x為弧度
double atan(double x) 返回x的反正切tan-1(x)值,x為弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x為弧度
double cos(double x) 返回x的餘弦cos(x)值,x為弧度
double sin(double x) 返回x的正弦sin(x)值,x為弧度
double tan(double x) 返回x的正切tan(x)值,x為弧度
double cosh(double x) 返回x的雙曲餘弦cosh(x)值,x為弧度
double sinh(double x) 返回x的雙曲正弦sinh(x)值,x為弧度
double tanh(double x) 返回x的雙曲正切tanh(x)值,x為弧度
double hypot(double x,double y) 返回直角三角形斜邊的長度(z),
x和y為直角邊的長度,z2=x2+y2
double ceil(double x) 返回不小於x的最小整數
double floor(double x) 返回不大於x的最大整數
void srand(unsigned seed) 初始化隨機數發生器
int rand() 產生一個隨機數並返回這個數
double poly(double x,int n,double c[])從參數產生一個多項式
double modf(double value,double *iptr)將雙精度數value分解成尾數和階
double fmod(double x,double y) 返回x/y的余數
double frexp(double value,int *eptr) 將雙精度數value分成尾數和階
double atof(char *nptr) 將字元串nptr轉換成浮點數並返回這個浮點數
double atoi(char *nptr) 將字元串nptr轉換成整數並返回這個整數
double atol(char *nptr) 將字元串nptr轉換成長整數並返回這個整數
char *ecvt(double value,int ndigit,int *decpt,int *sign)
將浮點數value轉換成字元串並返回該字元串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
將浮點數value轉換成字元串並返回該字元串
char *gcvt(double value,int ndigit,char *buf)
將數value轉換成字元串並存於buf中,並返回buf的指針
char *ultoa(unsigned long value,char *string,int radix)
將無符號整型數value轉換成字元串並返回該字元串,radix為轉換時所用基數
char *ltoa(long value,char *string,int radix)
將長整型數value轉換成字元串並返回該字元串,radix為轉換時所用基數
char *itoa(int value,char *string,int radix)
將整數value轉換成字元串存入string,radix為轉換時所用基數
double atof(char *nptr) 將字元串nptr轉換成雙精度數,並返回這個數,錯誤返回0
int atoi(char *nptr) 將字元串nptr轉換成整型數, 並返回這個數,錯誤返回0
long atol(char *nptr) 將字元串nptr轉換成長整型數,並返回這個數,錯誤返回0
double strtod(char *str,char **endptr)將字元串str轉換成雙精度數,並返回這個數,
long strtol(char *str,char **endptr,int base)將字元串str轉換成長整型數,
並返回這個數,
int matherr(struct exception *e)
用戶修改數學錯誤返回信息函數(沒有必要使用)
double _matherr(_mexcep why,char *fun,double *arg1p,
double *arg2p,double retval)
用戶修改數學錯誤返回信息函數(沒有必要使用)
unsigned int _clear87() 清除浮點狀態字並返回原來的浮點狀態
void _fpreset() 重新初使化浮點數學程序包
unsigned int _status87() 返回浮點狀態字
int chdir(char *path) 使指定的目錄path(如:"C:\\WPS")變成當前的工作目錄,成
功返回0
int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功
返回0
pathname為指定的目錄名和文件名,如"C:\\WPS\\TXT"
ffblk為指定的保存文件信息的一個結構,定義如下:
┏━━━━━━━━━━━━━━━━━━┓
┃struct ffblk ┃
┃{ ┃
┃ char ff_reserved[21]; /*DOS保留字*/┃
┃ char ff_attrib; /*文件屬性*/ ┃
┃ int ff_ftime; /*文件時間*/ ┃
┃ int ff_fdate; /*文件日期*/ ┃
┃ long ff_fsize; /*文件長度*/ ┃
┃ char ff_name[13]; /*文件名*/ ┃
┃} ┃
┗━━━━━━━━━━━━━━━━━━┛
attrib為文件屬性,由以下字元代表
┏━━━━━━━━━┳━━━━━━━━┓
┃FA_RDONLY 只讀文件┃FA_LABEL 卷標號┃
┃FA_HIDDEN 隱藏文件┃FA_DIREC 目錄 ┃
┃FA_SYSTEM 系統文件┃FA_ARCH 檔案 ┃
┗━━━━━━━━━┻━━━━━━━━┛
例:
struct ffblk ff;
findfirst("*.wps",&ff,FA_RDONLY);
int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0
void fumerge(char *path,char *drive,char *dir,char *name,char *ext)
此函數通過盤符drive(C:、A:等),路徑dir(\TC、\BC\LIB等),
文件名name(TC、WPS等),擴展名ext(.EXE、.COM等)組成一個文件名
存與path中.
int fnsplit(char *path,char *drive,char *dir,char *name,char *ext)
此函數將文件名path分解成盤符drive(C:、A:等),路徑dir(\TC、\BC\LIB等),
文件名name(TC、WPS等),擴展名ext(.EXE、.COM等),並分別存入相應的變數中.
int getcurdir(int drive,char *direc) 此函數返回指定驅動器的當前工作目錄名稱
drive 指定的驅動器(0=當前,1=A,2=B,3=C等)
direc 保存指定驅動器當前工作路徑的變數 成功返回0
char *getcwd(char *buf,iint n) 此函數取當前工作目錄並存入buf中,直到n個字
節長為為止.錯誤返回NULL
int getdisk() 取當前正在使用的驅動器,返回一個整數(0=A,1=B,2=C等)
int setdisk(int drive) 設置要使用的驅動器drive(0=A,1=B,2=C等),
返回可使用驅動器總數
int mkdir(char *pathname) 建立一個新的目錄pathname,成功返回0
int rmdir(char *pathname) 刪除一個目錄pathname,成功返回0
char *mktemp(char *template) 構造一個當前目錄上沒有的文件名並存於template中
char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路徑,
,此函數使用DOS的PATH變數,未找到文件返回NULL
void abort() 此函數通過調用具有出口代碼3的_exit寫一個終止信息於stderr,
並異常終止程序。無返回值
int exec…裝入和運行其它程序
int execl( char *pathname,char *arg0,char *arg1,…,char *argn,NULL)
int execle( char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int execlp( char *pathname,char *arg0,char *arg1,…,NULL)
int execlpe(char *pathname,char *arg0,char *arg1,…,NULL,char *envp[])
int execv( char *pathname,char *argv[])
int execve( char *pathname,char *argv[],char *envp[])
int execvp( char *pathname,char *argv[])
int execvpe(char *pathname,char *argv[],char *envp[])
exec函數族裝入並運行程序pathname,並將參數
arg0(arg1,arg2,argv[],envp[])傳遞給子程序,出錯返回-1
在exec函數族中,後綴l、v、p、e添加到exec後,
所指定的函數將具有某種操作能力
有後綴 p時,函數可以利用DOS的PATH變數查找子程序文件。
l時,函數中被傳遞的參數個數固定。
v時,函數中被傳遞的參數個數不固定。
e時,函數傳遞指定參數envp,允許改變子進程的環境,
無後綴e時,子進程使用當前程序的環境。
void _exit(int status)終止當前程序,但不清理現場
void exit(int status) 終止當前程序,關閉所有文件,寫緩沖區的輸出(等待輸出),
並調用任何寄存器的"出口函數",無返回值
int spawn…運行子程序
int spawnl( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL)
int spawnle( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int spawnlp( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL)
int spawnlpe(int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int spawnv( int mode,char *pathname,char *argv[])
int spawnve( int mode,char *pathname,char *argv[],char *envp[])
int spawnvp( int mode,char *pathname,char *argv[])
int spawnvpe(int mode,char *pathname,char *argv[],char *envp[])
spawn函數族在mode模式下運行子程序pathname,並將參數
arg0(arg1,arg2,argv[],envp[])傳遞給子程序.出錯返回-1
mode為運行模式
mode為 P_WAIT 表示在子程序運行完後返回本程序
P_NOWAIT 表示在子程序運行時同時運行本程序(不可用)
P_OVERLAY表示在本程序退出後運行子程序
在spawn函數族中,後綴l、v、p、e添加到spawn後,
所指定的函數將具有某種操作能力
有後綴 p時, 函數利用DOS的PATH查找子程序文件
l時, 函數傳遞的參數個數固定.
v時, 函數傳遞的參數個數不固定.
e時, 指定參數envp可以傳遞給子程序,允許改變子程序運行環境.
當無後綴e時,子程序使用本程序的環境.
int system(char *command) 將MSDOS命令command傳遞給DOS執行
char *ecvt(double value,int ndigit,int *decpt,int *sign)
將浮點數value轉換成字元串並返回該字元串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
將浮點數value轉換成字元串並返回該字元串
char *gcvt(double value,int ndigit,char *buf)
將數value轉換成字元串並存於buf中,並返回buf的指針
char *ultoa(unsigned long value,char *string,int radix)
將無符號整型數value轉換成字元串並返回該字元串,radix為轉換時所用基數
char *ltoa(long value,char *string,int radix)
將長整型數value轉換成字元串並返回該字元串,radix為轉換時所用基數
char *itoa(int value,char *string,int radix)
將整數value轉換成字元串存入string,radix為轉換時所用基數
double atof(char *nptr) 將字元串nptr轉換成雙精度數,並返回這個數,錯誤返回0
int atoi(char *nptr) 將字元串nptr轉換成整型數, 並返回這個數,錯誤返回0
long atol(char *nptr) 將字元串nptr轉換成長整型數,並返回這個數,錯誤返回0
double strtod(char *str,char **endptr)將字元串str轉換成雙精度數,並返回這個數,
long strtol(char *str,char **endptr,int base)將字元串str轉換成長整型數,
並返回這個數,
int toascii(int c) 返回c相應的ASCII
int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應的小寫字母('a'-'z')
int _tolower(int ch) 返回ch相應的小寫字母('a'-'z')
int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應的大寫字母('A'-'Z')
int _toupper(int ch) 返回ch相應的大寫字母('A'-'Z')
void assert(int test) 一個擴展成if語句那樣的宏,如果test測試失敗,
就顯示一個信息並異常終止程序,無返回值
void perror(char *string) 本函數將顯示最近一次的錯誤信息,格式如下:
字元串string:錯誤信息
char *strerror(char *str) 本函數返回最近一次的錯誤信息,格式如下:
字元串str:錯誤信息
int matherr(struct exception *e)
用戶修改數學錯誤返回信息函數(沒有必要使用)
double _matherr(_mexcep why,char *fun,double *arg1p,
double *arg2p,double retval)
用戶修改數學錯誤返回信息函數(沒有必要使用)
int kbhit() 本函數返回最近所敲的按鍵
int fgetchar() 從控制台(鍵盤)讀一個字元,顯示在屏幕上
int getch() 從控制台(鍵盤)讀一個字元,不顯示在屏幕上
int putch() 向控制台(鍵盤)寫一個字元
int getchar() 從控制台(鍵盤)讀一個字元,顯示在屏幕上
int putchar() 向控制台(鍵盤)寫一個字元
int getche() 從控制台(鍵盤)讀一個字元,顯示在屏幕上
int ungetch(int c) 把字元c退回給控制台(鍵盤)
char *cgets(char *string) 從控制台(鍵盤)讀入字元串存於string中
int scanf(char *format[,argument…])從控制台讀入一個字元串,分別對各個參數進行
賦值,使用BIOS進行輸出
int vscanf(char *format,Valist param)從控制台讀入一個字元串,分別對各個參數進行
賦值,使用BIOS進行輸出,參數從Valist param中取得
int cscanf(char *format[,argument…])從控制台讀入一個字元串,分別對各個參數進行
賦值,直接對控制台作操作,比如顯示器在顯示時字元時即為直接寫頻方式顯示
int sscanf(char *string,char *format[,argument,…])通過字元串string,分別對各個
參數進行賦值
int vsscanf(char *string,char *format,Vlist param)通過字元串string,分別對各個
參數進行賦值,參數從Vlist param中取得
int puts(char *string) 發關一個字元串string給控制台(顯示器),
使用BIOS進行輸出
void cputs(char *string) 發送一個字元串string給控制台(顯示器),
直接對控制台作操作,比如顯示器即為直接寫頻方式顯示
int printf(char *format[,argument,…]) 發送格式化字元串輸出給控制台(顯示器)
使用BIOS進行輸出
int vprintf(char *format,Valist param) 發送格式化字元串輸出給控制台(顯示器)
使用BIOS進行輸出,參數從Valist param中取得
int cprintf(char *format[,argument,…]) 發送格式化字元串輸出給控制台(顯示器),
直接對控制台作操作,比如顯示器即為直接寫頻方式顯示
int vcprintf(char *format,Valist param)發送格式化字元串輸出給控制台(顯示器),
直接對控制台作操作,比如顯示器即為直接寫頻方式顯示,
參數從Valist param中取得
int sprintf(char *string,char *format[,argument,…])
將字元串string的內容重新寫為格式化後的字元串
int vsprintf(char *string,char *format,Valist param)
將字元串string的內容重新寫為格式化後的字元串,參數從Valist param中取得
int rename(char *oldname,char *newname)將文件oldname的名稱改為newname
int ioctl(int handle,int cmd[,int *argdx,int argcx])
本函數是用來控制輸入/輸出設備的,請見下表:
┌———┬————————————————————————————┐
│cmd值 │功能 │
├———┼————————————————————————————┤
│ 0 │取出設備信息 │
│ 1 │設置設備信息 │
│ 2 │把argcx位元組讀入由argdx所指的地址 │
│ 3 │在argdx所指的地址寫argcx位元組 │
│ 4 │除把handle當作設備號(0=當前,1=A,等)之外,均和cmd=2時一樣 │
│ 5 │除把handle當作設備號(0=當前,1=A,等)之外,均和cmd=3時一樣 │
│ 6 │取輸入狀態 │
│ 7 │取輸出狀態 │
│ 8 │測試可換性;只對於DOS 3.x │
│ 11 │置分享沖突的重算計數;只對DOS 3.x │
└———┴————————————————————————————┘
int (*ssignal(int sig,int(*action)())()執行軟體信號(沒必要使用)
int gsignal(int sig) 執行軟體信號(沒必要使用)
int _open(char *pathname,int access)為讀或寫打開一個文件,
按後按access來確定是讀文件還是寫文件,access值見下表
┌——————┬————————————————————┐
│access值 │意義 │
├——————┼————————————————————┤
│O_RDONLY │讀文件 │
│O_WRONLY │寫文件 │
│O_RDWR │即讀也寫 │
│O_NOINHERIT │若文件沒有傳遞給子程序,則被包含 │
│O_DENYALL │只允許當前處理必須存取的文件 │
│O_DENYWRITE │只允許從任何其它打開的文件讀 │
│O_DENYREAD │只允許從任何其它打開的文件寫 │
│O_DENYNONE │允許其它共享打開的文件 │
└——————┴————————————————————┘
int open(char *pathname,int access[,int permiss])為讀或寫打開一個文件,
按後按access來確定是讀文件還是寫文件,access值見下表
┌————┬————————————————————┐
│access值│意義 │
├————┼————————————————————┤
│O_RDONLY│讀文件 │
│O_WRONLY│寫文件 │
│O_RDWR │即讀也寫 │
│O_NDELAY│沒有使用;對UNIX系統兼容 │
│O_APPEND│即讀也寫,但每次寫總是在文件尾添加 │
│O_CREAT │若文件存在,此標志無用;若不存在,建新文件 │
│O_TRUNC │若文件存在,則長度被截為0,屬性不變 │
│O_EXCL │未用;對UNIX系統兼容 │
│O_BINARY│此標志可顯示地給出以二進制方式打開文件 │
│O_TEXT │此標志可用於顯示地給出以文本方式打開文件│
└————┴————————————————————┘
permiss為文件屬性,可為以下值:
S_IWRITE允許寫 S_IREAD允許讀 S_IREAD|S_IWRITE允許讀、寫
int creat(char *filename,int permiss) 建立一個新文件filename,並設定
讀寫性。permiss為文件讀寫性,可以為以下值
S_IWRITE允許寫 S_IREAD允許讀 S_IREAD|S_IWRITE允許讀、寫
int _creat(char *filename,int attrib) 建立一個新文件filename,並設定文件
屬性。attrib為文件屬性,可以為以下值
FA_RDONLY只讀 FA_HIDDEN隱藏 FA_SYSTEM系統
int creatnew(char *filenamt,int attrib) 建立一個新文件filename,並設定文件
屬性。attrib為文件屬性,可以為以下值
FA_RDONLY只讀 FA_HIDDEN隱藏 FA_SYSTEM系統
int creattemp(char *filenamt,int attrib) 建立一個新文件filename,並設定文件
屬性。attrib為文件屬性,可以為以下值
FA_RDONLY只讀 FA_HIDDEN隱藏 FA_SYSTEM系統
int read(int handle,void *buf,int nbyte)從文件號為handle的文件中讀nbyte個字元
存入buf中
int _read(int handle,void *buf,int nbyte)從文件號為handle的文件中讀nbyte個字元
存入buf中,直接調用MSDOS進行操作.
int write(int handle,void *buf,int nbyte)將buf中的nbyte個字元寫入文件號
為handle的文件中
int _write(int handle,void *buf,int nbyte)將buf中的nbyte個字元寫入文件號
為handle的文件中
int p(int handle) 復制一個文件處理指針handle,返回這個指針
int p2(int handle,int newhandle) 復制一個文件處理指針handle到newhandle
int eof(int *handle)檢查文件是否結束,結束返回1,否則返回0
long filelength(int handle) 返迴文件長度,handle為文件號
int setmode(int handle,unsigned mode)本函數用來設定文件號為handle的文件的打
開方式
int getftime(int handle,struct ftime *ftime) 讀取文件號為handle的文件的時間,
並將文件時間存於ftime結構中,成功返回0,ftime結構如下:
┌—————————————————┐
│struct ftime │
│{ │
│ unsigned ft_tsec:5; /*秒*/ │
│ unsigned ft_min:6; /*分*/ │
│ unsigned ft_hour:5; /*時*/ │
│ unsigned ft_day:5; /*日*/ │
│ unsigned ft_month:4;/*月*/ │
│ unsigned ft_year:1; /*年-1980*/ │
│} │
└—————————————————┘
int setftime(int handle,struct ftime *ftime) 重寫文件號為handle的文件時間,
新時間在結構ftime中.成功返回0.結構ftime如下:
┌—————————————————┐
│struct ftime │
│{ │
│ unsigned ft_tsec:5; /*秒*/ │
│ unsigned ft_min:6; /*分*/ │
│ unsigned ft_hour:5; /*時*/ │
│ unsigned ft_day:5; /*日*/ │
│ unsigned ft_month:4;/*月*/ │
│ unsigned ft_year:1; /*年-1980*/ │
│} │
└—————————————————┘
long lseek(int handle,long offset,int fromwhere) 本函數將文件號為handle的文件
的指針移到fromwhere後的第offset個位元組處.
SEEK_SET 文件開關 SEEK_CUR 當前位置 SEEK_END 文件尾
long tell(int handle) 本函數返迴文件號為handle的文件指針,以位元組表示
int isatty(int handle)本函數用來取設備handle的類型
int lock(int handle,long offset,long length) 對文件共享作封鎖
int unlock(int handle,long offset,long length) 打開對文件共享的封鎖
int close(int handle) 關閉handle所表示的文件處理,handle是從_creat、creat、
creatnew、creattemp、p、p2、_open、open中的一個處調用獲得的文件處理
成功返回0否則返回-1,可用於UNIX系統
int _close(int handle) 關閉handle所表示的文件
C. 求C語言的數學函數大全
數學函數(原型聲明所在頭文件為math.h、stdlib.h、string.h、float.h)
int abs(int i) 返回整型參數i的絕對值
double cabs(struct complex znum) 返回復數znum的絕對值
double fabs(double x) 返回雙精度參數x的絕對值
long labs(long n) 返回長整型參數n的絕對值
double exp(double x) 返回指數函數ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,分配得來的n存貯在eptr中
double ldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回x的開方
double acos(double x) 返回x的反餘弦cos-1(x)值,x為弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x為弧度
double atan(double x) 返回x的反正切tan-1(x)值,x為弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x為弧度
double cos(double x) 返回x的餘弦cos(x)值,x為弧度
double sin(double x) 返回x的正弦sin(x)值,x為弧度
double tan(double x) 返回x的正切tan(x)值,x為弧度
double cosh(double x) 返回x的雙曲餘弦cosh(x)值,x為弧度
double sinh(double x) 返回x的雙曲正弦sinh(x)值,x為弧度
double tanh(double x) 返回x的雙曲正切tanh(x)值,x為弧度
double hypot(double x,double y) 返回直角三角形斜邊的長度(z),
x和y為直角邊的長度,z2=x2+y2
double ceil(double x) 返回不小於x的最小整數
double floor(double x) 返回不大於x的最大整數
void srand(unsigned seed) 初始化隨機數發生器
int rand() 產生一個隨機數並返回這個數
double poly(double x,int n,double c[])從參數產生一個多項式
double modf(double value,double *iptr)將雙精度數value分解成尾數和階,iptr返回整數部分,函數返回小數部分:fraction = modf(number, &integer);
double fmod(double x,double y) 返回x/y的余數
double atof(char *nptr) 將字元串nptr轉換成浮點數並返回這個浮點數
double atoi(char *nptr) 將字元串nptr轉換成整數並返回這個整數
double atol(char *nptr) 將字元串nptr轉換成長整數並返回這個整數
char *ecvt(double value,int ndigit,int *decpt,int *sign)
將浮點數value轉換成字元串並返回該字元串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
將浮點數value轉換成字元串並返回該字元串
char *gcvt(double value,int ndigit,char *buf)
將數value轉換成字元串並存於buf中,並返回buf的指針
char *ultoa(unsigned long value,char *string,int radix)
將無符號整型數value轉換成字元串並返回該字元串,radix為轉換時所用基數
char *ltoa(long value,char *string,int radix)
將長整型數value轉換成字元串並返回該字元串,radix為轉換時所用基數
char *itoa(int value,char *string,int radix)
將整數value轉換成字元串存入string,radix為轉換時所用基數
double atof(char *nptr) 將字元串nptr轉換成雙精度數,並返回這個數,錯誤返回0
int atoi(char *nptr) 將字元串nptr轉換成整型數, 並返回這個數,錯誤返回0
long atol(char *nptr) 將字元串nptr轉換成長整型數,並返回這個數,錯誤返回0
double strtod(char *str,char **endptr)將字元串str轉換成雙精度數,並返回這個數,
long strtol(char *str,char **endptr,int base)將字元串str轉換成長整型數, 並返回這個數。
int matherr(struct exception *e) 用戶修改數學錯誤返回信息函數(沒有必要使用)
double _matherr(_mexcep why,char *fun,double *arg1p, double *arg2p,double retval)
用戶修改數學錯誤返回信息函數(沒有必要使用)
unsigned int _clear87() 清除浮點狀態字並返回原來的浮點狀態
void _fpreset() 重新初使化浮點數學程序包
unsigned int _status87() 返回浮點狀態字
D. c語言中math頭文件中的函數有哪些
數學函數庫,一些數學計算的公式的具體實現是放在math.h里,具體有:
1
三角函數
double
sin
(double);
double
cos
(double);
double
tan
(double);
2
反三角函數
double
asin
(double);
結果介於[-PI/2,
PI/2]
double
acos
(double);
結果介於[0,
PI]
double
atan
(double);
反正切(主值),
結果介於[-PI/2,
PI/2]
double
atan2
(double,
double);
反正切(整圓值),
結果介於[-PI/2,
PI/2]
3
雙曲三角函數
double
sinh
(double);
double
cosh
(double);
double
tanh
(double);
4
指數與對數
double
exp
(double);
double
sqrt
(double);
double
log
(double);
以e為底的對數
double
log10
(double);
double
pow(double
x,
double
y)//計算以x為底數的y次冪
5
取整
double
ceil
(double);
取上整
double
floor
(double);
取下整
6
絕對值
double
fabs
(double);
double
cabs(struct
complex
znum)
//求復數的絕對值
7
標准化浮點數
double
frexp
(double
f,
int
*p);
標准化浮點數,
f
=
x
*
2^p,
已知f求x,
p
(
x介於[0.5,
1]
)
double
ldexp
(double
x,
int
p);
與frexp相反,
已知x,
p求f
8
取整與取余
double
modf
(double,
double*);
將參數的整數部分通過指針回傳,
返回小數部分
double
fmod
(double,
double);
返回兩參數相除的余數
9其他
double
hypot(double
x,
double
y);//已知直角三角形兩個直角邊長度,求斜邊長度
double
ldexp(double
x,
int
exponent);//計算x*(2的exponent次冪)
double
poly(double
x,
int
degree,
double
coeffs
[]
)//計算多項式
nt
matherr(struct
exception
*e)//數學錯誤計算處理程序
source:
《C
&
C++
Code
Capsules》
E. c語言中math頭文件中的函數有哪些
數學函數庫,一些數學計算的公式的具體實現是放在math.h里,具體有:
1 三角函數
double sin (double);
double cos (double);
double tan (double);
2 反三角函數
double asin (double); 結果介於[-PI/2, PI/2]
double acos (double); 結果介於[0, PI]
double atan (double); 反正切(主值), 結果介於[-PI/2, PI/2]
double atan2 (double, double); 反正切(整圓值), 結果介於[-PI/2, PI/2]
3 雙曲三角函數
double sinh (double);
double cosh (double);
double tanh (double);
4 指數與對數
double exp (double);
double sqrt (double);
double log (double); 以e為底的對數
double log10 (double);
double pow(double x, double y)//計算以x為底數的y次冪
5 取整
double ceil (double); 取上整
double floor (double); 取下整
6 絕對值
double fabs (double);
double cabs(struct complex znum) //求復數的絕對值
7 標准化浮點數
double frexp (double f, int *p); 標准化浮點數, f = x * 2^p, 已知f求x, p ( x介於[0.5, 1] )
double ldexp (double x, int p); 與frexp相反, 已知x, p求f
8 取整與取余
double modf (double, double*); 將參數的整數部分通過指針回傳, 返回小數部分
double fmod (double, double); 返回兩參數相除的余數
9其他
double hypot(double x, double y);//已知直角三角形兩個直角邊長度,求斜邊長度
double ldexp(double x, int exponent);//計算x*(2的exponent次冪)
double poly(double x, int degree, double coeffs [] )//計算多項式
nt matherr(struct exception *e)//數學錯誤計算處理程序
source: 《C & C++ Code Capsules》
F. c語言常用庫函數有哪些
C語言的標准庫函數有數百個,分布在不同的庫文件中,目前絕大多數系統和程序肯定兼容的是C99標准,但2011年已經發布了更新的版本,有些遺留系統不一定支持最新的特性。
不同函數應用場合不一樣,說不說哪些更常用,就看你所做工作的性質了。
通常來說,至少在基礎編程時,stdio中的輸入輸出(可能是控制台的、也可能是文件的)、stdlib中的各種通用工具(如分配堆內存)、string中的字元串處理、time中的日期時間處理、math中的數學函數都算是比較常用的。
G. 要記住C語言數學函數庫中的那些函數
使用一些數學演算法,如:三角函數sin,cos;X^n;開平方啊 等
H. 有誰能幫我將C語言中所有的函數及其功能一一列舉一下,不勝感激
復制
#include
"stdio.h"
{char
s1[]="abcde",s2[]="scasasa";
strcpy(s1,s2);
如果s2長度大於s1則會覆蓋掉
如果小於的話只是將s2的\0放在s1中\0的前面罷了,而後面處理字元串的函數是遇到\0就收手
函數名:
strncpy
功
能:
串拷貝
用
法:
char
*strncpy(char
*destin,
char
*source,
int
maxlen);
程序例:
#include
#include
int
main(void)
{
char
string[10];
char
*str1
=
"abcdefghi";
strncpy(string,
str1,
3);
string[3]
=
'\0';
printf("%s\n",
string);
return
0;
}
函數名:
remove
功
能:
刪除一個文件
用
法:
int
remove(char
*filename);
程序例:
#include
int
main(void)
{
char
file[80];
/*
prompt
for
file
name
to
delete
*/
printf("file
to
delete:
");
gets(file);
/*
delete
the
file
*/
if
(remove(file)
==
0)
printf("removed
%s.\n",file);
else
perror("remove");
return
0;
}
函數名:
rename
功
能:
重命名文件
用
法:
int
rename(char
*oldname,
char
*newname);
程序例:
#include
int
main(void)
{
char
oldname[80],
newname[80];
/*
prompt
for
file
to
rename
and
new
name
*/
printf("file
to
rename:
");
gets(oldname);
printf("new
name:
");
gets(newname);
/*
rename
the
file
*/
if
(rename(oldname,
newname)
==
0)
printf("renamed
%s
to
%s.\n",
oldname,
newname);
else
perror("rename");
return
0;
}
I. 在C語言中有那些函數名
僅僅為了獲取函數名,就在函數體中嵌入硬編碼的字元串,這種方法單調乏味還易導致錯誤,不如看一下怎樣使用新的C99特性,在程序運行時獲取函數名吧.對象反射庫、調試工具及代碼分析器,經常會需要在運行時訪問函數的名稱,直到不久前,唯一能完成此項任務並且可移植的方法,是手工在函數體內嵌入一個帶有該函數名的硬編碼字元串,不必說,這種方法非常單調無奇,並且容易導致錯誤。本文將要演示怎樣使用新的C99特性,在運行時獲取函數名。
那麼怎樣以編程的方式從當前運行的函數中得到函數名呢?
答案是:使用__FUNCTION__ 及相關宏。
引出問題
通常,在調試中最讓人心煩的階段,是不斷地檢查是否已調用了特定的函數。對此問題的解決方法,一般是添加一個cout或printf()——如果你使用C語言,如下所示:
void myfunc()
{
cout<<"myfunc()"<<endl;
//其他代碼
}
通常在一個典型的工程中,會包含有數千個函數,要在每個函數中都加入一條這樣的輸出語句,無疑難過上「蜀山」啊,因此,需要有一種機制,可以自動地完成這項操作。
獲取函數名
作為一個C++程序員,可能經常遇到 __TIME__、__FILE__、__DATE__ 這樣的宏,它們會在編譯時,分別轉換為包含編譯時間、處理的轉換單元名稱及當前時間的字元串。
在最新的ISO C標准中,如大家所知的C99,加入了另一個有用的、類似宏的表達式__func__,其會報告未修飾過的(也就是未裁剪過的)、正在被訪問的函數名。請注意,__func__不是一個宏,因為預處理器對此函數一無所知;相反,它是作為一個隱式聲明的常量字元數組實現的:
static const char __func__[] = "function-name";
在function-name處,為實際的函數名。為激活此特性,某些編譯器需要使用特定的編譯標志,請查看相應的編譯器文檔,以獲取具體的資料。
有了它,我們可免去大多數通過手工修改,來顯示函數名的苦差事,以上的例子可如下所示進行重寫:
void myfunc()
{
cout<<"__FUNCTION__"<<endl;
}
官方C99標准為此目的定義的__func__標識符,確實值得大家關注,然而,ISO C++卻不完全支持所有的C99擴展,因此,大多數的編譯器提供商都使用 __FUNCTION__ 取而代之,而 __FUNCTION__ 通常是一個定義為 __func__ 的宏,之所以使用這個名字,是因為它已受到了大多數的廣泛支持。
在Visual Studio 2005中,默認情況下,此特性是激活的,但不能與/EP和/P編譯選項同時使用。請注意在IDE環境中,不能識別__func__ ,而要用__FUNCTION__ 代替。
Comeau的用戶也應使用 __FUNCTION__ ,而不是 __func__ 。
C++ BuilderX的用戶則應使用稍稍不同的名字:__FUNC__ 。
GCC 3.0及更高的版本同時支持 __func__ 和__FUNCTION__ 。
一旦可自動獲取當前函數名,你可以定義一個如下所示顯示任何函數名的函數:
void show_name(const char * name)
{
cout<<name<<endl;
}
void myfunc()
{
show_name(__FUNCTION__); //輸出:myfunc
}
void foo()
{
show_name(__FUNCTION__); //輸出:foo
}
因為 __FUNCTION__ 會在函數大括弧開始之後就立即初始化,所以,foo()及myfunc()函數可在參數列表中安全地使用它,而不用擔心重載。
簽名與修飾名
__FUNCTION__ 特性最初是為C語言設計的,然而,C++程序員也會經常需要有關他們函數的額外信息,在Visual Studio 2005中,還支持另外兩種非標準的擴展特性:__FUNCDNAME__ 與 __FUNCSIG__ ,其分別轉譯為一個函數的修飾名與簽名。函數的修飾名非常有用,例如,在你想要檢查兩個編譯器是否共享同樣的ABI時,就可派得上用場,另外,它還能幫助你破解那些含義模糊的鏈接錯誤,甚至還可用它從一個DLL中調用另一個用C++鏈接的函數。在下例中,show_name()報告了函數的修飾名:
void myfunc()
{
show_name(__FUNCDNAME__); //輸出:?myfunc@@YAXXZ
}
一個函數的簽名由函數名、參數列表、返回類型、內含的命名空間組成。如果它是一個成員函數,它的類名和const/volatile限定符也將是簽名的一部分。以下的代碼演示了一個獨立的函數與一個const成員函數簽名間的不同之處,兩個函數的名稱、返回類型、參數完全相同:
void myfunc()
{
show_name(__FUNCSIG__); // void __cdecl myfunc(void)
}
struct S
{
void myfunc() const
{
show_name(__FUNCSIG__); //void __thiscall S::myfunc(void) const
}
};
J. C語言中全部可用的數學函數有哪些
2.long labs(long n); 求長整型數的絕對值。
3.double fabs(double x); 求實數的絕對值。
4.double floor(double x); 求不大於x的最大整數,它相當於數學函數[x]。
5.double ceil(double x); 求不小於x的最小整數。
6.double sqrt(double x); 求x的平方根。
7.double log10(double x); 求x的常用對數。
8.double log(double x); 求x的自然對數。
9.double exp(double x); 求歐拉常數e的x次方。
10.double pow10(int p); 求10的p次方。
11.double pow(double x, double y); 求x的y次方。
12.double sin(double x); 正弦函數。
13.double cos(double x); 餘弦函數。
14.double tan(double x); 正切函數。
15.double asin(double x); 反正弦函數。
16.double acos(double x); 反餘弦函數。
17.double atan(double x); 反正切函數。