字符串的插入问题

将一个字符串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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值