1. 程式人生 > >C語言常用函式庫中函式

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:選項值大小

  這些函式常會帶來很大的便利性,要做到靈活運用。