C語言常用函式庫中函式
1.pow(x,y);求x的y次方; 2.strstr(str1,str2);判斷str2是否為str1的子串,若是返回首次出現的位置,若不是返回NULL; 3.strcat(char* dest, const char *src);字串剪接函式,將src接到dest尾部; 4.strcpy(char* dest, const char *src);字串複製函式,將帶有\0結束符的src複製到dest; 5.sprintf(),將資料按照指定格式,向指定地址輸出;例如十進位制97可按%d輸出到指定緩衝區,緩衝區中儲存的是字串97;按%c輸出到緩衝區,儲存的是‘a’; 6.snprintf(char*str, size_t size,constchar*format, …),效果同sprintf,但可以指定要拷貝size-1個字元,snprintf的返回值是欲寫入的字串(即源字串)長度,而不是實際寫入的字串度 7.fprintf(FILE* stream, const char*format, [argument]),按指定格式向指定流輸出,如將流指定為stdout時,即輸出到控制檯,和printf效果一樣; 8.atoi(),ascii to integer,將字串轉換成整數,該函式要求被轉換的字串是按十進位制數理解的,可識別負數; 9.atof(),把字串轉換成浮點數; 10.double strtod(const char *nptr,char **endptr);將字串轉換成浮點數,若endptr不為NULL,則會將遇到不合條件而終止的nptr中的字元指標由endptr傳回。 11.ntohl(),linux的原始碼(/include/netinet/in.h)
# if __BYTE_ORDER == __BIG_ENDIAN
/* The host byte order is the same as network byte order,
so these functions are all just identity. */
# define ntohl(x) (x)
# define ntohs(x) (x)
# define htonl(x) (x)
# define htons(x) (x)
# else
# if __BYTE_ORDER == __LITTLE_ENDIAN
# define ntohl(x) __bswap_32 (x)
# define ntohs(x) __bswap_16 (x)
# define htonl(x) __bswap_32 (x)
# define htons(x) __bswap_16 (x)
# endif
# endif
從上面的標頭檔案內容可以看出,ntohs和htons是一樣的。如果平臺是大字序的(如Pocket PC),則這些函式不作任何轉換,只有在平臺是小字序時(如X86),這些函式才進行相應的轉換,htons和ntohs(以及htonl和ntohl)實際上沒有任何區別,都是把位元組序反轉。
12.setsocketopt(int sock, int level, int optname, const void *optval, socklen_t optlen) 設定套接字屬性 引數: sockfd:套接字描述符 level:協議層 可以取三種值:
1)SOL_SOCKET:通用套接字選項
2)IPPROTO_IP:IP選項
3)IPPROTO_TCP:TCP選項
optname:選項名,指定控制的方式,最重要的引數; ============================================================
選項名稱 說明 資料型別
=========================================================== SOL_SOCKET
SO_BROADCAST 允許傳送廣播資料 int
SO_DEBUG 允許除錯 int
SO_DONETROUTE 不查詢路由 int
SO_ERROR 獲得套接字錯誤 int
SO_KEEPALIVE 保持連線 int
SO_LINGER 延遲關閉連線 struct linger
SO_OOBINLINE 帶外資料放入正常資料流 int
SO_RCVBUF 接受緩衝區大小 int
SO_SNDBUF 傳送緩衝區大小 int
SO_RCVLOWAT 接受緩衝區下限 int
SO_SNDLOWAT 傳送緩衝區下限 int
SO_RCVTIMEO 接受超時 struct timeval
SO_SNDTIMEO 傳送超時 struct timeval
SO_REUSEADDR 允許重用本地地址和埠 int
SO_TYPE 獲得套接字型別 int
SO_BSDCOMPAT 與BSD系統相容 int
============================================================
IPPROTO_IP
IP_HDRINCL 在資料包中包含IP首部 int
IP_OPTIONS IP首部選項 int
IP_TOS 服務型別
IP_TTL 生存時間 int
============================================================ IPPRO_TCP ============================================================ TCP_MAXSEG TCP最大資料段的大小 int
TCP_NODELAY 不使用Nagle演算法 int
============================================================ optval:選項值 optlen:選項值大小
這些函式常會帶來很大的便利性,要做到靈活運用。