将一个字符串插入到另一个字符串的指定位置的题目(用C语言解决)
示例如第一个字符串为"you are ok."
第二个字符串为"fine and "
输入的整数为8,则表示将fine插在ok前面(y前面为位置0,o前面的位置为8),输出为you are fine and ok. 展开
void Insert(char*s1,char*s2,int n)
{
char*result=(char*)malloc(20*sizeof(char));
char*temp=result;//保存result的初始地址,因为后面要改变result
//把s1的一部分赋给result
for(int i=0;i<n;i++)
{
*result=*(s1++);
result++;
}
//把s2的所有内容赋给result
while(*s2!='\0')
{
*result=*(s2++);
result++;
}
*result='\0';//字符串结束符
printf("%s\n",temp);
}
int main()
{
char*s1=(char*)malloc(20*sizeof(char));
char*s2=(char*)malloc(20*sizeof(char));
int n;
printf("请输入第一个字符串:");
scanf("%s",s1);
printf("请输入第二个字符串:");
scanf("%s",s2);
printf("请输入插入的位置:");
scanf("%d",&n);
Insert(s1,s2,n);
getchar();
system("pause");
return 0;
}
示例运行结果:
请输入第一个字符串:You are ok
请输入第二个字符串:fine and
请输入插入的位置:8
You are fine and ok
请按任意键继续…
扩展资料:
char用法:
C语言中char用于定义字符类型变量或字符指针变量,例如“char a;”则定义了变量a是字符类型,“char*a;”则定义了变量a是字符指针类型。
char是C语言整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中不指定为signed/unsigned,编译器可以实现为带符号的,也可以实现为不带符号的。
关于char还有一个特殊的语言就是char*,它在C语言中有专门的语义,既不同于signed char*,也不同于unsigned char*,专门用于指以'\0'为结束的字符串。
#include <string>
using namespace std;
void Insert(char* s1,char* s2,int n)
{
char *result = (char*)malloc(20*sizeof(char));
char *temp = result; //保存result的初始地址,因为后面要改变result
//把s1的一部分赋给result
for(int i=0; i<n; i++)
{
*result = *(s1++);
result++;
}
//把s2的所有内容赋给result
while(*s2 != '\0')
{
*result = *(s2++);
result++;
}
*result = '\0'; //字符串结束符
printf("%s",temp);
}
int main()
{
char *s1 = (char*)malloc(20*sizeof(char));
char *s2 = (char*)malloc(20*sizeof(char));
int n;
printf("请输入第一个字符串:");
scanf("%s",s1);
printf("请输入第二个字符串:");
scanf("%s",s2);
printf("请输入插入的位置:");
scanf("%d",&n);
Insert(s1,s2,n);
return 0;
}
编译通过!!有什么不懂可以问我哈
#include<string.h>
void main()
{
char ch[40],ch2[20],ch3[20],i,j,temp,x;
printf("请输入第一串字符:");
gets(ch);
printf("请输入第二串字符:");
gets(ch2);
printf("请输入插入的位置:");
scanf("%d",&i);
temp = i;
for(j=0;ch[temp] != '\0';j++,temp++)
ch3[j] = ch[temp];
ch3[j]='\0';
for(j=0;j<strlen(ch);j++,i++)
ch[i] = ch2[j];
strcat(ch,ch3);
ch[i] = '\0';
puts(ch);
}