#include <stdlib.h>
这句话可以不要
目前共有22篇帖子。
![]() |
回復20樓 @巨大八爪鱼 的內容:可以用C语言库函数把insert函数改写成更简单且更容易理解的版本:
#include <stdio.h> #include <stdlib.h> #incl... #include <stdlib.h>
这句话可以不要 |
![]() |
void insert(char *s1, const char *s2)
{ int len1 = strlen(s1); int len2 = strlen(s2); int pos; char *ch = strchr(s1, *s2); // 在s1中查找s2的第一个字符,返回该字符在s1中的位置地址,如果没有找到,返回NULL if (ch == NULL) // 如果没有找到 memcpy(s1 + len1, s2, len2 + 1); // 直接把s2字符串连同末尾的\0一起复制到s1[len1]处,也就是s1的字符串结尾处(\0处) else { // 以abcdef, d45为例 pos = *ch - *s1; // 计算找到的字符d在s1中的位置(数字,从0开始),计算结果为3 memmove(ch + len2 - 1, ch, len1 - pos + 1); // 移动字符串空出空间。把def\0向右移动len2-1个位置(也就是2个位置),共移动len1 - pos + 1个字节,也就是4个字节。 memcpy(ch, s2, len2); // 复制字符串。把d45(不含末尾的\0)复制到abc[ded]ef的[ded]处覆盖掉。 // 其实程序在这里还可以进行修改。因为字符“d”没必要复制 } } |