C语言字符串操作函数及常用的实现
- C语言
- 关注:1.51W次
面试官很喜欢让求职者写一些常用库函数的实现,有很多是和字符串相关的,有一些是关于内存拷贝的。一般,常会让写的函数有以下几个:
strcpy , strncpy, memcpy。
memset一般不会让去写,但这个函数也很有特点,有很多容易用错的地方。一并总结吧。
字符串操作函数 | |
atof() | 将字符串转换成浮点数 |
atoi() | 将字符串转换成整数 |
atol() | 将字符串转换成长整型数 |
gcvt() | 将浮点型数转换为字符串(四舍五入) |
strtod() | 将字符串转换成浮点数 |
strtol() | 将字符串转换成长整型数 |
strtoul() | 将字符串转换成无符号长整型数 |
toascii() | 将整数转换成合法的ASCII码字符 |
tolower() | 将大写字母转换为小写字母 |
toupper() | 将小写字母转换为大写字母 |
index() | 查找字符串并返回首次出现的位置 |
rindex() | 查找字符串并返回最后一次出现的位置 |
strcasecmp() | 判断字符串是否相等(忽略大小写) |
strcat() | 连接字符串 |
strcmp() | 根据ASCII码比较字符串 |
strcoll() | 根据环境变量LC_COLLATE来比较字符串 |
strcpy() | 复制字符串 |
strcspn() | 查找字符串并返回首次出现的位置 |
strchr() | 查找字符串并返回首次出现该字符的地址 |
strdup() | 复制字符串 |
strlen() | 返回字符串长度 |
strncasecmp() | 比较字符串的前n个字符 |
strncat() | 拼接字符串(取前n个字符) |
strncpy() | 复制字符串(取前n个字符) |
strpbrk() | 定位字符串中第一个出现的指定字符 |
strrchr() | 定位字符串中最后出现的指定字符 |
strspn() | 返回从字符串开头连续包含特定字符的字符数目 |
strstr() | 返回指定字符串第一次出现的地址 |
strtok() | 字符串分割 |
1. strcpy
strcpy函数的原型是:
char * strcpy(char* dest, const char* src)
strcpy的实现经常要注意的细节是:
(1)判断地址是否为空,个人感觉可以使用断言
(2)参数只有两个地址,没有拷贝的长度。拷贝到'