你會發(fā)現,有一些頭文件(比如stdlib.h,stdio.h)每一個編譯器都有,而里面的函數(如printf,malloc)每一個編譯器都支持。這些函數組成的集合就是標準函數庫。平常用的函數基本都屬于標準函數庫。
創(chuàng)新互聯公司主營新羅網站建設的網絡公司,主營網站建設方案,app軟件定制開發(fā),新羅h5小程序制作搭建,新羅網站營銷推廣歡迎新羅等地區(qū)企業(yè)咨詢
ANSI對此是有規(guī)定的
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.但是從輸入流中讀取字符時又涉及到緩沖的問題,所以并不是在屏幕中敲上一個字符程序就會運行,一般是通過在屏幕上敲上回車鍵,然后將回車前的字符串放在緩沖區(qū)中,getchar就是在緩沖區(qū)中一個一個的讀字符.當然也可以在while循環(huán)中指定終止字符,如下面的語句: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:
要讀寫的字節(jié)數。
count:
要進行讀寫多少個size字節(jié)的數據項。
fp:
文件型指針。
1)字符串操作
strcpy(p, p1) 復制字符串
strncpy(p, p1, n) 復制指定長度字符串
strcat(p, p1) 附加字符串
strncat(p, p1, n) 附加指定長度字符串
strlen(p) 取字符串長度
strcmp(p, p1) 比較字符串
strcasecmp忽略大小寫比較字符串
strncmp(p, p1, n) 比較指定長度字符串
strchr(p, c) 在字符串中查找指定字符
strrchr(p, c) 在字符串中反向查找
strstr(p, p1) 查找字符串
strpbrk(p, p1) 以目標字符串的所有字符作為集合,在當前字符串查找該集合的任一元素
strspn(p, p1) 以目標字符串的所有字符作為集合,在當前字符串查找不屬于該集合的任一元素的偏移
strcspn(p, p1) 以目標字符串的所有字符作為集合,在當前字符串查找屬于該集合的任一元素的偏移
* 具有指定長度的字符串處理函數在已處理的字符串之后填補零結尾符
2)字符串到數值類型的轉換
strtod(p, ppend) 從字符串 p 中轉換 double 類型數值,并將后續(xù)的字符串指針存儲到 ppend 指向的 char* 類型存儲。
strtol(p, ppend, base) 從字符串 p 中轉換 long 類型整型數值,base 顯式設置轉換的整型進制,設置為 0 以根據特定格式判斷所用進制,0x, 0X 前綴以解釋為十六進制格式整型,0 前綴以解釋為八進制格式整型
atoi(p) 字符串轉換到 int 整型
atof(p) 字符串轉換到 double 符點數
atol(p) 字符串轉換到 long 整型
3)字符檢查
isalpha() 檢查是否為字母字符
isupper() 檢查是否為大寫字母字符
islower() 檢查是否為小寫字母字符
isdigit() 檢查是否為數字
isxdigit() 檢查是否為十六進制數字表示的有效字符
isspace() 檢查是否為空格類型字符
iscntrl() 檢查是否為控制字符
ispunct() 檢查是否為標點符號
isalnum() 檢查是否為字母和數字
isprint() 檢查是否是可打印字符
isgraph() 檢查是否是圖形字符,等效于 isalnum() | ispunct()
在?C語言程序設計里,C 標準函數庫(C Standard library) ?是所有符合標準的頭文件(head file)的集合,以及常用的函數庫實現程序,例如I/O 輸入輸出和字符串控制。不像?COBOL、Fortran?和?PL/I等編程語言,在 C 語言的工作任務里不會包含嵌入的關鍵字,所以幾乎所有的 C 語言程序都是由標準函數庫的函數來創(chuàng)建的。
每一個函數的名稱與特性會被寫成一個電腦文件,這個文件就稱為頭文件,但是實際的函數實現是被分存到函數庫文件里。頭文件的命名和領域是很常見的,但是函數庫的組織架構也會因為不同的編譯器而有所不同。標準函數庫通常會隨附在編譯器上。因為 C 編譯器常會提供一些額外的非?ANSI C?函數功能,所以某個隨附在特定編譯器上的標準函數庫,對其他不同的編譯器來說,是不兼容的。
文件stddef.h里包含了標準庫的一些常用定義,無論我們包含哪個標準頭文件,stddef.h都會被自動包含進來。
這個文件里定義:
類型size_t (sizeof運算符的結果類型,是某個無符號整型);
類型ptrdiff_t(兩個指針相減運算的結果類型,是某個有符號整型);
類型wchar_t (寬字符類型,是一個整型,其中足以存放本系統(tǒng)所支持的所有本地環(huán)境中的字符集的所有編碼值。這里還保證空字符的編碼值為0);
符號常量NULL (空指針值);
宏offsetor (這是一個帶參數的宏,第一個參數應是一個結構類型,第二個參數應是結構成員名。 offsetor(s,m)求出成員m在結構類型t的變量里的偏移量)。
庫函數:顧名思義是把函數放到庫里..是別人把一些常用到的函數編完放到一個文件里,供別人用.別人用的時候把它所在的文件名用#include加到里面就可以了.一般是放到lib文件里的。
一般是指編譯器提供的可在c源程序中調用的函數??煞譃閮深愐活愂莄語言標準規(guī)定的庫函數一類是編譯器特定的庫函數。
由于版權原因庫函數的源代碼一般是不可見的但在頭文件中你可以看到它對外的接口。什么是庫函數語言的語句十分簡單如果要使用語言的語句直接計算sin或cos函數就需要編寫頗為復雜的程序。因為語言的語句中沒有提供直接計算sin或cos函數的語句。又如為了顯示一段文字我們在語言中也找不到顯示語句只能使用庫函數printf。
語言的庫函數并不是語言本身的一部分它是由編譯程序根據一般用戶的需要編制并提供用戶使用的一組程序。的庫函數極大地方便了用戶同時也補充了語言本身的不足。事實上在編寫語言程序時應當盡可能多地使用庫函數這樣既可以提高程序的運行效率又可以提高編程的質量。