C语言技巧总结(自用)

宏相关内容

#define 定义一个预处理的宏

#undef 取消宏的定义

#if 编译以处理中的条件命令,类似于C语言中的if语句

#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句

#elif 若#if,#ifdef,#ifndef或前面的#elif条件不满足,则执行当前#elif之后的语句,相当于C语言中的else if

#endif #if ,#ifdef,#ifndef这些条件命令的结束标志 

#define STRINGIFY(x) #x  使用#操作符将参数转换为字符串

#define CONCAT(x, y) x##y   使用##操作符来将两个符号连接在一起

常见位运算

符号描述运算规则
&两个位都为1时,结果才为1
|两个位都为0时,结果才为0
^异或两个位相同为0,相异为1
~取反0变1,1变0
<<左移各二进位全部左移若干位,高位丢弃,低位补0
>>右移各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

C库函数

字符串处理函数:

strlen(const char *str):返回字符串的长度
strcpy(char *dest, const char *src):复制字符串
strcat(char *dest, const char *src):连接字符串
strchr(const char *str, int c):在字符串中查找字符
strstr(const char *haystack, const char *needle):在字符串中查找子串
strspn() : size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标
strcmp(): C 库函数 **int strcmp(const char *str1, const char *str2)****str1** 所指向的字符串和 **str2** 所指向的字符串进行比较。如果返回值小于 0,则表示 str1 小于 str2;如果返回值大于 0,则表示 str1 大于 str2;如果返回值等于 0,则表示 str1 等于 str2
strncmp():C 库函数 **int strncmp(const char *str1, const char *str2, size_t n)****str1****str2** 进行比较,最多比较前 **n** 个字节。如果返回值小于 0,则表示 str1 小于 str2;如果返回值大于 0,则表示 str1 大于 str2;如果返回值等于 0,则表示 str1 等于 str2

动态内存分配函数:

malloc(size_t size):分配指定大小的内存空间
calloc(size_t num, size_t size):分配指定数量、大小的内存空间,并初始化为0
realloc(void *ptr, size_t size):更改已分配内存块的大小
memcpy():C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n个字节到存储区 str1
memset():C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符

文件操作函数:

fopen(const char *filename, const char *mode):打开文件
fclose(FILE *stream):关闭文件
fputc(int c, FILE *stream):将一个字符写入文件
fgets(char *str, int n, FILE *stream):从文件读取一行文字

数学函数:

fabs(double x):返回x的绝对值
sqrt(double x):返回x的平方根
pow(double x, double y):返回x的y次幂
sin(double x):返回x的正弦值
cos(double x):返回x的余弦值

日期和时间函数:

time_t time(time_t *t):获取当前时间
struct tm *localtime(const time_t *timep):将时间转换为当地时间
char *asctime(const struct tm *timeptr):返回日期和时间的字符串表示
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值