用指针编写函数 : insert(s1,s2,f), 其功能是在字符串 s1 中的指定位置 f 处插入字符 串 s2

如题所述

#include"stdio.h"
#include"string.h"
char *insert(char *s1,char *s2,int f)
{
char s3[80];
int a,i,j;
if(*(s1+f-1)!='\0')
{
for(i=0;i<f-1;i++)
s3[i]=*(s1+i);/*把s1的f之前的字符复制到s3上*/
}
else return s1;
a=strlen(s2);
for(j=0;j<a;j++)/*把s2的字符复制到s3上*/
s3[i++]=*(s2+j);
for(j=f;j<strlen(s1);j++)/*把s1剩下的复制到s3上*/
s3[i]=*(s1+j);
return s3;
}
main()
{
char s1[40]={'\0'},s2[40]={'\0'};
int f;
printf("please input two strings:\n");
gets(s1);/*输入s1*/
getchar();
gets(s2);/*输入s2*/
printf("please input an int to cut the string:\n");
scanf("%d",&f);
printf("the new string is:%s\n",insert(s1,s2,f));
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-20
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int MAX_STR1=1024,MAX_STR2=1024;

int insert(char *str1,char *str2,int index)
{
char *string;
string=calloc(strlen(str1)+strlen(str2),sizeof(char));
memcpy(string,str1,index);
strcpy(string+index,str2);
strcpy(string+index+strlen(str2),str1+index);
printf("after You insert the string the source string is %s\n",string);
free(string);
return 0;
}

int main(int argc,char **argv)
{
char *str1,*str2,*finstr;
int index=0;
if(argc==3)
{
MAX_STR1=atoi(argv[1]);
MAX_STR2=atoi(argv[2]);
printf("you have input the [size %d] of the str1,and the [size %d] str2\n",MAX_STR1,MAX_STR2);
}
str1=calloc(MAX_STR1,sizeof(char));
str2=calloc(MAX_STR2,sizeof(char));

printf("please input the source string:");
scanf("%s",str1);
printf("\n");
if(strlen(str1)>MAX_STR1){
printf("you input the str1's size is big than %d\n",MAX_STR1);
return 0;
}
printf("please input the string which you will insert the source string:");
scanf("%s",str2);
printf("\n");
if(strlen(str2)>MAX_STR2){
printf("you input the str1's size is big than %d\n",MAX_STR2);
return 0;
}
printf("please input the location where you will insert to the source string:");
scanf("%d",&index);
printf("\n");
if(index>strlen(str1)){
printf("the location is not access\n");
return 0;
}
insert(str1,str2,index);
free(str1);
free(str2);
return 0;
}
可以自定义str1和str2的长度大小,如运行test 5 8,那么输入str1时长度不能超过5,str2不能超过8,默认不加参数,长度分别为1024
第2个回答  2011-05-20
程序的主体代码:(自己再稍加修改即可)

#include <string.h>
void main()
{
int len;
char * p , s1[20], s2[20];
gets(s1);
gets(s2);
len=strlen(s1);
p=&s1[len];
strcat(p, s2);
printf("s1: %s\n",s1);
}
第3个回答  2011-05-26
#include <iostream>
#include <string.h>
using namespace std;
void insert(char* str1,char* str2,int index){
int i;
int sz2=strlen(str2);
for (i=index;i<sz2+index;i++){
str1[i+sz2]=str1[i];
}
for (i=0;i<sz2;i++){
str1[index+i]=str2[i];
}
}
void main()
{
char str1[16]="abcde";
char str2[5]="fghm";
insert(str1,str2,3);
for (int i=0;i<strlen(str1);i++)
cout<<str1[i];
getchar();
getchar();
}

...insert(s1,s2,f),其功能是在字符串s1中的指定位置f处插入字符串s2...
include<stdio.h>int insert(char *s1, char *s2, int f){ char *cp, *tcp; tcp = s1 + strlen(s1); cp = s1 + f; if(tcp < cp) return -1; while(tcp >= cp) { *(tcp + strlen(s2)) = *tcp; tcp--; } while(*s2 != '\\0') ...

...insert(s1,s2,f), 其功能是在字符串 s1 中的指定位置 f 处插入...
char s1[40]={'\\0'},s2[40]={'\\0'};int f;printf("please input two strings:\\n");gets(s1);\/*输入s1*\/ getchar();gets(s2);\/*输入s2*\/ printf("please input an int to cut the string:\\n");scanf("%d",&f);printf("the new string is:%s\\n",insert(s1,s2,f));ret...

编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插...
public string insert(string s1,string s2,char ch){ string[] tempstr = s1.Split(ch.ToString()); \/\/\/将s1按照搜索到的字符进行分割,返回字符串数组,并丢失分割依据,即字符ch string news1 = "";for(int i=0;i<tempstr.Length;i++)\/\/\/组合新字符串;在第一个串和第二个串分割的...

...实现在字符串s1中的指定位置pos处插入字符串s2。
include <string.h> void insert(char s1[],char s2[],int pos);void main(){ char s1[50],s2[50];int pos;gets(s1);gets(s2);printf("请选择要插入的位置: ");scanf("%d",&pos);insert(s1,s2,pos);} void insert(char s1[],char s2[],int pos){ int i,a,b;char o[20]...

两个字符串,怎么在指定位置插入,大神求解释代码
int insert(char*s1,char*s2,int f)\/\/形参对应字符串s1,s2,以及插入位置 { char*cp,*tcp;\/\/临时指针变量 tcp=s1+strlen(s1);\/\/指向字符串s1结尾处,即原字符串s1中结尾'\\0'的位置 cp=s1+f;\/\/指向字符串s1的插入位置 if(tcp<cp)return -1;\/\/表明异常,插入位置大于原字符串长度 whil...

...编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处...
你的s1,s2是字符,不是字符串

输入两个字符串s1和s2,在s1指定的位置插入s2,试编程
include <string.h> int main( ){ char s1[81],s2[20];char *p1=s1,*p2=s2;int len1,len2,i,k;gets(p1);gets(p2);len1=strlen(p1),len2=strlen(p2);scanf("%d",&i);for(k=len1;k>=i;k--){ s1[k+len2]=s1[k];} for(k=0;k<len2;k++){ s1[i+k]=s2[k]...

编程序实现功能:从键盘上输入两个字符串s1和s2,将s2 的内容插入到s1内容...
include <stdio.h>#include <string.h>#define LEN 20\/*将src插入至des的pos处*\/void insertStr (char *des, char *src, int pos) {char *posp = des+pos; \/*指向des之pos处的指针*\/char front[LEN],back[LEN]; \/*暂存字符串*\/int i;i=0;while (des<posp) \/*des前半段转录至...

用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好...
void insert(int x[],int m){ int i,k;if(m<=x[0])\/\/插入到最前端的情况 { for(i=9;i>=0;i--)x[i+1] = x[i];x[0] = m;} if(m>=x[9])\/\/插入到最末端的情况 x[10] = m;if(m>x[0] && m<x[9])\/\/插入到中间的情况 { for(i=0;i<10;i++){ if(m>x...

pascal函数过程表
GETMEM(P,I) P 分配变长的动态变量,并把块地址存放在一个指针变量中 HALT P 立即中止程序执行,返回TP编辑器或DOS HI(I) F 返回一个变量的高位字节 INSERT(S,D,POS) F 在一个字符串中某一位置开始插入一个子串 INT F 取整数部分 IORESULT F 返回最后一次输入\/出操作的结果状态 ...

相似回答