C字符串

字符串长度

库函数strlen的原型如下:
size_t strlen(char const* string);
其中size_t类型为unsinged long
所以下述比较可能带来潜在的错误:

if (strlen(str1) - strlen(str2) >= 0)

>=左边操作数的计算结果为无符号类型,实际上也会将右边操作数0解释为无符号类型,有符号类型和无符号类型做相同运算时会将数值类型提升为无符号。
正确的写法:

if (strlen(str1) >= strlen(str2))

该函数的实现也比较简单。

不受限制的字符串函数

最常用的字符串函数都是不受限制的,就是说它们只是通过寻找字符串参数结尾的NULL字节来判断长度,程序员必须保证结果字符串不会溢出这块内存。

复制字符串

库函数strcpy原型如下:
char* strcpy(char* dst, char const* src);
返回指向dst的字符指针,
使用时必须保证目标字符数组的空间足以容纳需要复制的字符串。

连接字符串

char* strcat(char* dest, char const* src);

字符串比较

int strcmp(char const* s1, char const* s2);
s1<s2返回小于0的数,=返回0,>返回大于0的数。

长度受限的字符串函数

char* strncpy(char* dest, char const* src, size_t len);
char* strncat(char* dest, char const* src, size_t len);
char* strncmp(char const* s1, char const* s2, size_t len);

如果src长度小于len,用\0填充,如果大于len,之用len个字符被复制。

字符操作

内存操作

void* memcpy(void* dest, void* src, size_t n);
void* memmove(void* dest, void* src, size_t n);
void* memcmp(void* dest, void* src, size_t n);
void* memchr(void const *src, int c, size_t n);
void* memset(void* src, int c, size_t n);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值