关于不用任何中间变量快速插入字符串的方法
偶得空闲,遂来CSND溜达,发现贴子一篇,要求:不采用任何中间变量和库函数,将一字符串插入另一字符串的任意指定位置。给出的条件是两个字符串的空间均为可读可写,且空间长度能保证插入字符串后不会越界!
看到此题,引起了本人的兴趣,略加思索,写下代码下如,感觉效率倒也还过得去,不会比采用库函数的效率低,至于能否继续精简、有没有更好的思路等等,就没有继续考虑了。
代码如下:
- #include <stdio.h>
- //dtr--被插的字符串,str--插入的字符串, locat---插入为置
- void insert(char *dtr, char *str, int locat)
- {
- dtr+=locat;
- locat=0;
- while(*str)
- {
- while(*str)
- {
- *dtr^=*str;
- *str^=*dtr;
- *dtr^=*str;
- str++;
- dtr++;
- locat++;
- }
- str-=locat;
- locat=0;
- }
- }
- int main()
- {
- char str1[100]="1234567890"; //测试一下
- char str2[]="abcdefg";
- insert(str1,str2,10);
- puts(str1);
- return 0;
- }