将一个字符串str插入另一个dest的index处:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define maxsize 50
char *insert(char*, char*, int);
int main()
{
int index;
char *dest = (char*)malloc(sizeof(char) * maxsize);
char *src = (char*)malloc(sizeof(char) * maxsize);
char *res = (char *)malloc(sizeof(char) * 2 * maxsize);
scanf("%s%s", dest, src);
scanf("%d", &index);
res = insert(dest, src, index);
if (res == NULL) exit(-1);
puts(res);
free(dest);
free(src);
free(res);
return 0;
}
char *insert(char *dest, char *src, int index)
{
int i = 0, len = strlen(dest);
char *result = (char *)malloc(sizeof(char) * maxsize * 2);
char *res = result;
if (index > len || index < 0)
{
printf("index illegal!\n");
return NULL;
}
for (; *dest != '\0' || *src != '\0'; i++)
{
if (i == index)
for (; *src != '\0'; src++)
*result++ = *src;
*result++ = *dest++;
}
*result = '\0';
return res;
}
充分利用string库:
#include <stdio.h>
#include <string.h>
void insert(char s[],char ss[] ,int p)
{
int m=p;
char t[100];
strncpy(t,s,p); //将s数组的前p个字符复制到t中
for(int i=0;ss[i];i++,p++)
t[p]=ss[i];
strcat(t,(s+m)); //将s剩余的字符串连接到t
strcpy(s,t); //将t复制到s中
}
int main()
{
char str[100],dest[100];
int position;
printf("please input str:");
gets(str);
printf("please input another str:");
gets(dest);
printf("please input position:");
scanf("%d",&position);
insert (dest,str,position);
puts(dest);
return 0;
}
插入单个字符:
#include <stdio.h>
#include <string.h>
void insert(char s[],char t ,int i)
{
char str[100];
strncpy(str,s,i); //将s数组的前i个字符复制到str中
str[i] = t; //将t放到str后面
str[i + 1] = '\0'; //结束
strcat(str,(s+i)); //将s剩余的字符串连接到str
strcpy(s,str); //将str复制到s中
}
int main()
{
char str[100],c;
int position;
printf("please input str:");
gets(str);
printf("please input a char:");
scanf("%c",&c);
printf("please input position:");
scanf("%d",&position);
insert (str,c,position);
puts(str);
return 0;
}