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(charstr, size_t size,constcharformat, …),效果同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:选项值大小
这些函数常会带来很大的便利性,要做到灵活运用。