C函數

char *fgets(char *buf, int bufsize, FILE *stream);前端

文件結構體指針stream中讀取數據,每次讀取一行。讀取的數據保存在buf指向的字符數組中,每次最多讀取bufsize-1個字符(第bufsize個字符賦'\0'),若是文件中的該行,不足bufsize個字符,則讀完該行就結束。如若該行(包括最後一個換行符)的字符數超過bufsize-1,則fgets只返回一個不完整的行,可是,緩衝區老是以NULL字符結尾,對fgets的下一次調用會繼續讀該行。函數成功將返回buf,失敗或讀到文件結尾返回NULL。所以咱們不能直接經過fgets的返回值來判斷函數是不是出錯而終止的,應該藉助feof函數或者ferror函數來判斷。數組

 

void exit(int status);      (stdlib.h)函數

功 能: 關閉全部文件,終止正在執行的進程。
exit(1)表示異常退出.這個1是返回給操做系統的。
exit(x)(x不爲0)都表示異常退出
exit(0)表示正常退出
 
int execlp(const char * file,const char * arg,....);    (unistd.h)
execlp()函數屬於exec()函數族(exec()族函數用一個新的進程映像替換當前進程映像)它是execve(2)函數的前端
相關函數:fork,execl,execle,execv,execve,execvp
execlp()會從PATH 環境變量所指的目錄中查找符合參數file的文件名,找到後便執行該文件,而後將第二個之後的參數當作該文件的argv[0]、argv[1]……,最後一個參數必須用空 指針(NULL)做結束。若是用常數0來表示一個空指針,則必須將它強制轉換爲一個字符指針,不然將它解釋爲整形參數,若是一個整形數的長度與char * 的長度不一樣,那麼exec函數的 實際參數就將出錯。若是 函數調用成功,進程本身的執行代碼就會變成加載程序的代碼,execlp()後邊的代碼也就不會執行了.
 
uid_t getuid(void);      (sys/types.h和unistd.h)
32位整型,函數返回一個調用程序的真實用戶ID。
gid_t getgid(void);   返回組ID
pid_t getpid(void);      (unistd.h)
getpid函數用來取得目前進程的進程 ID
 
fork – 建立新進程;exit – 終止進程;exec – 執行一個應用程序wait – 將 父進程掛起,等待子進程終止;getpid – 獲取當前進程的PID;nice – 改變進程的優先
 
signal(SIGINT, sig_int);    捕獲信號,調用sig_int函數。
 
long sysconf (int name);   (unistd.h) 
sysconf() 返回選項 (變量) 的當前值,這個值可配置的但也是受系統限制的。在成功完成的狀況下,sysconf() 返回變量的當前值。該值受到的限制將少於編譯時 <limits.h>, <unistd.h> 或 <time.h> 中可用的對應值。大多數這些變量的值在調用進程的生存時間內不變。
若是出錯,那麼函數返回 -1 , 適當地設置 errno 。當沒有錯誤發生時, -1 也是一個合法的返回值。所以,程序要檢查錯誤,應該在調用 sysconf() 以前將 errno 設置爲 0 ,而後,若是返回 -1,則檢驗到錯誤。

 

#include <string.h>ui

void *memset(void *s, int ch, size_t n);操作系統

void *memcpy(void *dest, const void *src, size_t n); 指針

int memcmp(const void *buf1, const void *buf2, unsigned int count);code

 

GetProcAddress()   檢索指定的動態連接庫(DLL)中的輸出庫函數地址。orm

 

#include <stdlib.h>htm

int *p = (int*)malloc(sizeof(int) * 1024);進程

 

分解字符串爲一組字符串。s爲要分解的字符,delim爲分隔符字符(若是傳入字符串,則傳入的字符串中每一個字符均爲分割符)。

首次調用時,s指向要分解的字符串,以後再次調用要把s設成NULL。

#include <string.h>

char s[] = "1,23|32|41|5";

char delims[] = ",";

char *result = NULL;

int num;

result = strtok(s, delims);

num = atoi(result);

char delims2[] = "|";

result = strtok(NULL, delims2);

while (NULL != result){

    num = atoi(result);

    result = strtok(NULL, delims2);   //  順序很重要

}

 

atoi (表示 alphanumeric to integer)是把字符串轉換成整型的一個函數。

 

int sscanf(const char *buffer,const char *format,[argument ]...); // 從一個字符串中讀進與指定格式相符的數據(二進制)

sscanf("1 2 3","%d %d %d",buf1, buf2, buf3); 成功調用返回值爲3,即buf1,buf2,buf3均成功轉換。
sscanf("1 2","%d %d %d",buf1, buf2, buf3); 成功調用返回值爲2,即只有buf1,buf2成功轉換。
 

int snprintf(char *str, size_t size, const char *format, ...); // 將可變個參數(...)按照format格式化成字符串,而後將其複製到str中

char str[10]={0};

int nLen=snprintf(str,sizof(str),"0123456789012345678"); // str=012345678, nLen=19

相關文章
相關標籤/搜索