c语言开发常用函数

背景:记录总结工作中经常会用到的函数

1、strtol()函数

【头文件】#include <stdlib.h>
【函数说明】strtol() 会将参数 str 字符串根据参数 base 来转换成长整型数(long)。
strtol() 会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(’\0’)结束转换,并将结果返回。

long int strtol (const char* str, char** endptr, int base);

【参数说明】str 为要转换的字符串,endstr 为第一个不能转换的字符的指针,base 为字符串 str 所采用的进制, 范围从2 至36,或0。如 base=10 则采用10 进制,若base=16 则采用16 进制等。

2、tm数据结构

struct tm {
         int tm_sec;       /* 秒 - 取值区间为[0,59] */
         int tm_min;      /* 分 - 取值区间为[0,59] */
         int tm_hour;      /* 时 - 取值区间为[0,23] */
         int tm_mday;     /* 一个月中的日期 - 取值区间为[1,31] */
         int tm_mon;      /* 月份(从一月开始,0代表一月)- 取值区间为[0,11] */
         int tm_year;      /* 年份,其值等于实际年份减去1900 */
         int tm_wday;     /* 星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
         int tm_yday;     /* 从每年的1月1日开始的天数 –  取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
         int tm_isdst;     /*夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
         };

3、memmove

【头文 件】:#include <string.h>
【函数说明】 内存进行移动

void * memmove ( void * destination, const void * source, size_t num );

【参数说明】

destination:指向要在其中复制内容的目标数组的指针,类型转换为 void* 类型的指针。

source:指向要复制的数据源的指针,类型转换为 const void* 类型的指针。

num :要复制的字节数。(size_t 是无符号整数类型)

返回值: 指向目标存储区 destination的指针。

4、ioctl

io设备控制函数(ctl),用于向设备发出控制命令或获取状态信息。

FIONBIO 是一个用于控制套接字非阻塞模式(也即线程不回因为还没返回而被阻塞)

5、select

select()函数允许程序监视多个文件描述符,等待所监视的一个或者多个文件描述符变为“准备好”的状态。

参数解释

  • nfds: 监视的文件描述符数量。通常是所有文件描述符中最大值加一。
  • readfds: 指向一个文件描述符集合,用于检查是否可以读取。
  • writefds: 指向一个文件描述符集合,用于检查是否可以写入。
  • exceptfds: 指向一个文件描述符集合,用于检查是否有异常条件。
  • timeout: 指向一个timeval结构,指定等待的超时时间。如果为NULL,则select会一直阻塞直到某个文件描述符准备好。

返回值

  • 返回准备好的文件描述符的数量。如果返回0,表示超时;如果返回-1,表示出错。

6、inet_ntop

网络地址结构转换,将ip格式地址转换为字符串

7、htons

将uint16_t代表的无符号整型转化为网络字符序(也即大端模式,高字节存于低地址),0x1234, 0x12存于低地址值,0x34存于高地址。

8、recv函数

recv 函数是用于从已连接的套接字接收数据的系统调用。它通常用于基于流的协议(如 TCP)。以下是 recv 函数的详细解释和示例。

size_t recv(int sockfd, void *buf, size_t len, int flags);

【参数说明】

  • sockfd:一个已连接的套接字描述符。
  • buf:指向一个缓冲区,用于存储接收到的数据。
  • len:缓冲区的长度(即要接收的最大字节数)。
  • flags:用于指定不同的操作选项。常用的标志有:
    • 0:默认,无特殊选项。
    • MSG_DONTWAIT:非阻塞模式,如果数据不可用则立即返回。
    • MSG_PEEK:查看数据而不从输入队列中移除它。
    • MSG_WAITALL:等待接收完整的数据(根据 len 参数)。

9、字符串转double的函数

atof // 无效字符串输出0.0 a代表ASCII, f代表float 为double和float混用
strtod // 提供了更详细的错误信息和剩余字符串处理能力

10、malloc

【函数说明】malloc函数可以从堆上获得指定n字节的内存空间

void * malloc(int n);

11、memset函数

void *memset(void *ptr, int value, size_t num);

【参数说明】:

  • ptr:指向需要被设置的内存区域的指针。
  • value:需要设置的值,如果设置为0,则函数将内存区域清零。
  • num:要设置的字节数。
  • 函数返回指向内存区域的指针,即ptr

12、calloc

【函数说明】calloc 会将分配的内存初始化为零。与 malloc 不同,calloc 会将分配的内存初始化为零,而 malloc 分配的内存中的内容是未定义的。

void *calloc(size_t num, size_t size);

【参数说明】

  • num 是要分配的元素个数。
  • size 是每个元素的大小(以字节为单位)。

PS:
1、malloc:分配指定字节空间,未初始化
2、calloc:分配num*size字节空间,适合数组,且初始化为0
3、memset: 将空间按字节进行初始化位value

不定时更新…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值