#include <stdio.h> #include <stdlib.h> /***************************************************** **功能:在字符串的任意位置插入另一指定字符串 **参数:char *strDest:被插入字符串首地址 ** char *strInst: 插入字符串首地址 ** int pos:插入位置 **返回值:插入字符串后得到新字符串首地址 ******************************************************/ char *insertString(char *strDest, char *strInst, int pos) { char *pTemp; //临时字符串指针,用于存放结果 int srctLength = 0; //源字符串地址长度 int instLenhth = 0; //插入字符串地址长度 /*判断字符串是否正常,*/ if((*strDest == '/0') ||(*strInst == '/0')) { printf("Error! string is NULL/n"); return NULL; } /*计算两字符串的指针长度,不含结束符*/ while(*strDest) { strDest++; srctLength++; } while(*strInst) { strInst++; instLenhth++; } /*将字符串指针指回首地址*/ strDest = strDest - srctLength; strInst = strInst - instLenhth; /*判断插入位置是否正常*/ if((pos < 0)||(pos > srctLength )) { printf("Error! the position is invalid/n"); return strDest; } pTemp = (char *)malloc(srctLength + instLenhth); //给临时指针分配内存空间 /*将被插入字符串的指定插入位置前的字符内容先存入临时指针变量中*/ while(pos &&(*pTemp = *strDest)) { pos--; pTemp++; strDest++; } /*将插入内容存入临时指针变量中*/ while((*pTemp = *strInst) != '/0') { pTemp++; strInst++; } /*最后将被插入字符串的指定插入位置后的字符内容存入临时指针变量中*/ while((*pTemp = *strDest)!= '/0') { pTemp++; strDest++; } /*将临时指针变量指向首地址,被插入字符串指针也指向首地址*/ pTemp = pTemp - srctLength - instLenhth; strDest = strDest - srctLength; strDest = pTemp; //将临时指针变量赋给被插入字符串指针 return strDest; free(pTemp); //释放内存空间 } int main(void) { char stra[] = "abcdef"; char strb[] = "ghl"; //插入的字符串 char *p; int i = 0; //插入字符串的位置 p = insertString(stra,strb,i); //插入函数 printf("the result string is:%s/n",p); } 运行结果:the result string is:ghlabcdef