C学习:绕不开的常用标准库函数及操作

我们知道的东西是有限的,而我们不知道的东西则是无穷的。——拉普拉斯

位操作


  • ~a, 取反
  • a ^ b, 异或

运算符


  • sizeof(),获得对象的所占空间大小,单位为bytesizeof(str),得到str所占含\0的空间大小,str为字符串数组名,该功能注意与strlen() 区分,详细分析见C学习:sizeof的用法理解

字符串操作函数


头文件:#include <string.h>

  • strtok(), 字符串分割(不可重入,慎用),高频重点
  • atoi(), 字符串转int整数,类似的还有atoll()有安全问题
  • strtol(),字符串转long整数,多一个进制入参,类似的有strtollstrtoul推荐使用
  • strtof(),字符串转float浮点,类似的有strtod
  • strstr(), 字符串子串匹配
  • strcpy(), 小字符串往大字符串全量拷贝,拷完后目标字符串末尾自动追加\0
  • strncpy(), 拷贝固定长度的字符串至目标字符串,可调节两个字符串偏移位置来实现灵活拷贝,拷贝完需末尾手动添加\0
  • strlen(), 获取字符串长度,不含\0
  • strcat(),将src字符串追加到dest字符串末尾,自动识别\0
  • strncat(),字符串连接,往末尾追加n个字符

内存管理


重点掌握前4个常用的即可,内存大小单位均为Byte

  • malloc(), 从堆里申请固定大小的连续内存,不初始化
  • calloc(), 从堆里申请固定大小的连续内存,并统一初始化为0
  • free(), 释放从堆里动态申请的内存空间
  • memset(), 将某连续内存设为某固定值
  • memcpy(),将源连续内存固定长度的值拷贝至目标连续内存,不关心数据类型,末尾不会自动添加\0。

输入输出


  • sscanf(), 将字符串内容按固定格式取给对应变量;类似scanf(),从键盘取固定格式内容
  • sprintf(), 将各变量按固定个数写入目标字符串