用指针编写函数 : insert(s1,s2,f), 其功能是在字符串 s1 中的指定位置 f 处插入字符 串 s2
4个回答
展开全部
#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;
}
#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;
}
展开全部
#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
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序的主体代码:(自己再稍加修改即可)
#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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();
}
#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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询