编写一个函数,利用指针在字符串s中的指定字符前插入标记字符。指定字符和标记字符均从键盘输入。
要求:子函数 char *InsertStr(char *s,char t,char c)
【输入形式】
输入主串s,输入指定字符t,输入标记字符c。
【输出形式】
输出插入后字符串
【样例输入】
abcabcde
b
【样例输出】
a#bca#bcde
编写一个函数,利用指针在字符串s中的指定字符前插入标记字符。指定字符和标记字符均从键盘输入。
要求:子函数 char *InsertStr(char *s,char t,char c)
【输入形式】
输入主串s,输入指定字符t,输入标记字符c。
【输出形式】
输出插入后字符串
【样例输入】
abcabcde
b
【样例输出】
a#bca#bcde
用strcpy就可以实现字符串的移动,下面是一个实现,供参考:
#include <stdio.h>
#include <string.h>
char * InsertStr(char *s,char t,char c){
char ch;
int i=0;
char temp[150];
while(s[i]!='\0'){
if(s[i]==t){
if(i==0){ //如果插入的是第一个字符位置
strcpy(temp,s); //复制当前字符位置往后的字符串到temp数组
s[i]=c; //当前位置插入标记字符
strcpy(s+1,temp); //当前位置后面拼接原来的字符串
// printf("s=%s\n",s);
i+=2; //指向指定字符后面的一个字符位置
continue; //开始下一个循环
}else { //如果插入的是第一个字符后的位置
strcpy(temp,s+i); //复制当前字符位置字符串到temp数组
s[i]=c; //当前位置插入标记字符
strcpy(s+i+1,temp); //当前位置后面插入一个字符拼接原来的字符串
// printf("s=%s\n",s);
i+=2; //指向指定字符后一个字符
continue; //开始下一个循环
}
}
i++;//指向下一个字符位置
}
return s;
}
int main(void){
char s[100];
char t,c;
scanf("%s",s);
while(getchar()!='\n')
continue;
scanf("%c",&t);
// printf("t=%c\n",t);
while(getchar()!='\n')
continue;
scanf("%c",&c);
// printf("c=%c\n",c);
InsertStr(s,t,c);
puts(s);
return 0;
}