C語言中自帶標頭檔案( h)中包含的函式

2021-07-31 03:57:33 字數 4990 閱讀 1217

由於之前沒有好好學習過c語言,所以對其自帶標頭檔案所包含的內容總是不清楚,每次寫**都是盲目的#include很多.h,現在重新整理一下,發現了不少很好的函式,以方便複習查閱。

不完全統計,c語言標準庫中的標頭檔案有15個之多,所以我主要介紹常用的這四個標頭檔案stdio.h,string.h,math.h,stdlib.h,以後用到其他的再做補充。下面上乾貨:

定義了輸入輸出函式、型別以及巨集,函式幾乎佔了標準庫的1/3。

(1)檔案訪問。

file *fopen(「filename」,「mode」):

以mode模式開啟位址為』filename』的檔案,並返回檔案指標。

訪問模式主要是「r」:唯讀; 「w」 :只寫,並刪除已有內容; 「a」:追加,在末尾追加;

「r+」, 「w+」:讀寫; 「a+」追加,上述結尾加「b」:二進位制檔案操作。

注意:其中r是開啟檔案,而w會建立(如果檔案不存在); w會覆蓋原有內容,a則是在原有檔案末尾追加。

int fclose(file *f):

釋放緩衝區資料,關閉流。

下面兩個沒太用過:

file *freopen(「filename」,「mode」,file * f):

以mode模式開啟位址為』filename』的檔案,並將該檔案與流f2關聯。

int fflush(file *f):

將已寫到緩衝區但未寫入檔案中的所有資料寫入檔案中。

(2)二進位制輸入/輸出

fread(ptr,size,n,file f):

從f中讀取n個長度為size的物件,並放入ptr指向的陣列中。

fwrite(ptr,size,n,file f):

從ptr指向陣列中讀取n個長度為size的物件,並寫入f中。

注意:要注意write與read的物件,讀和寫都是針對檔案流f的。

(3)非格式化輸入/輸出

int fgetc/getc(file *f):

返回流f的下乙個字元,到達檔案末尾/發生錯誤,則返回eof。

int fputc/putc(int c, file *f)

將字元c輸入到流f中。

int fgets(char * s,int n,file *f):

將f中下n-1個字元讀入到陣列s中。遇到換行符,則終止。

int fputs(const char * s,file *f):

將字串s輸出到流中。

int unget(int c, file *f)

將c寫回到f中。

(4)格式化輸入/輸出

按一定格式轉輸出。

scanf/fscanf/sscanf

printf/fprintf/sprintf

注意:不加f/s,則是格式字串標準輸入/出函式,輸入/出到終端/螢幕;printf(const char *format,…)

加s,輸入/出到字串中。sprintf(char *s,const char *format,…)

加f,輸入/出到檔案流中。 fprintf(file *f,const char *format,…)

(5)檔案定位

long ftell(file *f):

返回當前指標位置。錯誤時返回-1l。

int fseek(file *f,long offset,int origin):

將當前流f指標位置設定到:origin後offset個字元處。origin有:seek_set:檔案起始位置;seek_cur指標當前位置,seek_end:檔案結束位置。

void rewind(file *f)

指標返回檔案開始位置,相當於:fseek(f,0l,seek_set)

不常用:

int fgetpos(file *f,*p)

將指標當前位置記錄到*p中,以供fsetpos函式使用。

int fsetpos(file *f,const *p)

指標位置指向*p。

(6)錯誤處理與檔案操作

int feof(file *f)

指示檔案結束,一直返回0,結束時返回非0值。

int ferror(file *f)

如果設定了與f相關的錯誤指示符,則返回乙個非0值。

int remove(char *filename)

刪除指定位置的檔案。

int rename(const char *oldname,const char *newname)

改檔名,否則返回非0值。

file *tmpfile(void)

建立臨時檔案,『wb+』模式,在被關閉或程式正常結束時自動刪除

分成兩組,一組str開頭,一組mem開頭(該組函式在memory.h中也有定義,不是所有編譯器都有)

(1)str

char * strcpy (char *dest, const char *src);

將字串src複製到字串dest中(包括』\0』),返回dest

char * strncpy (char *dest, const char *src,n);

將src中的前n個字元複製到dest中,返回dest,不夠n個則補『\0』

char * strcat (char *dest, const char *src);

char * strncat (char *dest, const char *src,n);

src連線到dest後;src 中前n個字元連線到dest後。

int strcmp (const char *s1, const char *s2);

int strncmp (const char *s1, const char *s2,n);

比較s1與s2,s1小於s2則返回負數,否則返回0;比較前n個字元

char * strchr (const char *s, int c);

char * strrchr (const char *s, int c);

返回字串s中第一次出現字元c的位置指標;返回字串s中最後一次出現字元c的位置指標(c會轉換成char)

不常見

size_t strcspn (const char *s1, const char *s2);

char * strdup (const char *s);

char * strerror(int errnum);

(2)mem

void *memcpy(void *s, const void *ct,n)

將字串ct中的前n個字元拷貝到s中,並返回s。

void *memmove(s,ct,n)同上一函式,只是在物件重疊時仍能正確執行。

void *memset(void *s,int c, n)

將s中的前n個字元替換成c,並返回s。

int memcmp(cs,ct,n)

將cs前n個字元與ct進行比較,cs

一些數學函式

求絕對值

int abs (int x);

long labs (long x);

float fabs (float x):

下面函式的所有返回值均為double,三角函式角度用弧度表示,x,y均為double

double acos (x);

double asin (x);

double atan (x);

double atan2 (y, x): arctan(y/x)

double tan (x);

double tanh (x): 雙曲正切

double sin (x);

double sinh (x);

double cos (x);

double cosh (x);

double pow (x, y);

double sqrt (x);

double ceil (x): 不小於x的最小整型數(向上取整)

double floor (x): 不大於x的最大整型數(向下取整)

double exp (x);

double fabs (x);

double log (x): ln(x)

double log10 (x);

double fmod (x, y): x/y的餘數

double ldexp (x, n): x*2^n

double modf (x, double *ip): 將x分成整數與小數兩部分,返回小數部分,整數部分放在*ip中

double frexp (x, int *exp); 將x分成(0.5,1)之間的乙個真分數和乙個2的冪數,返回真分數,冪數放在exp中

數值轉換、記憶體分配等問題。

int rand(void)

產生乙個0~32767之間的隨機整數。

指標名=(資料型別 *)calloc(n,size)

分配n個長度為size的連續空間,並且將所有元素置零,返回首位址。

指標名=(資料型別 *)malloc(n*size)

分配n*size個位元組的記憶體,並返回首位址。

指標名p1=(資料型別 *)realloc(要改變記憶體大小的指標名p2,新的大小n)

分配長度為n位元組的空間,將p2值賦值到該記憶體中,返回首位址到p1.(改變p1指向位址的記憶體大小)

void free(*p)

釋放p指向的記憶體(p為malloc,realloc,calloc所開闢的記憶體)

void abort (void)

使程式非正常終止。

void exit(int status)

使程式正常終止。

以上是我總結的一些標頭檔案所包含的函式,由於時間倉促加上本人接觸c不久,難免有所紕漏,讀者可作為參考,發現問題還望指出,共同學習。

上面並未介紹所有的標頭檔案,所介紹標頭檔案包含的函式也只列出了一些常用的,後面學習繼續補充吧。

C語言中自帶的標頭檔案 h 所包含的函式

不完全統計,c語言標準庫中的標頭檔案有15個之多,所以我主要介紹常用的這四個標頭檔案stdio.h,string.h,math.h,stdlib.h,以後用到其他的再做補充。下面上乾貨 1.定義了輸入輸出函式 型別以及巨集,函式幾乎佔了標準庫的1 3。1 檔案訪問。file fopen filena...

c語言中關於標頭檔案重複包含

1 如果標頭檔案a包含標頭檔案c,同時標頭檔案b也包含標頭檔案c,而寫的程式中包含了標頭檔案a,標頭檔案b,然後在編譯的時候就會出現標頭檔案c重複包含的錯誤 這個錯誤 只要在自己寫的標頭檔案中這樣寫 ifndef x x為你的識別符號,保持唯一,可以長點,比如 ifndef include h de...

C語言中C檔案與h標頭檔案的關係

簡單的說其實要理解c檔案與標頭檔案 即.h 有什麼不同之處,首先需要弄明白編譯器的工作過程,一般說來編譯器會做以下幾個過程 1.預處理階段 2.詞法與語法分析階段 3.編譯階段,首先編譯成純彙編語句,再將之彙編成跟cpu相關的二進位製碼,生成各個目標檔案 obj檔案 4.連線階段,將各個目標檔案中的...