C语言 如何字符串数组中插入空格,要求位置是指定位置

其实原题是 两个字符串数组a和b,
例如 a( )= "i am a student" ;b()="key"
要求b()变成 "k ey k eykeyke"
我的想法是先把b()变成"keykeykeykeyk",然后插入空格,但不知怎么弄
如果有更直接或更好用的方法麻烦直接给出方法或代码

#include <stdio.h>
#include <string.h>

int insertCh(char str[], char ch, int pos) {
int i,len = strlen(str);
if(pos < 1 || pos > len) return 0;
for(i = len + 1; i >= pos; --i)
str[i] = str[i - 1];
str[i] = ch;
return 1;
}
  
int main() {
    char line[100] = "I am a stdent.";
int pos = 10,ch = 'u';
    if(insertCh(line,ch,pos)) printf("%s\n",line);
    else printf("插入位置无效!\n");
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-25
其实很简单的,这是代码:
#include <stdio.h>
#include <string.h>
main()
{
char buf[100]="",a[100]="i am a student",b[100]="key";
int i,n=0 ;
for(i=0;i<strlen(a);i++)
{
if(a[i]==32) buf[i]=32; //搜索a中的空格对应b中的空格
else
{//不是空格就原样复制,当b中元素到结尾时把n值为0,重复循环,直到a结束
buf[i]=b[n];
n++;
if(n>strlen(b)-1) n=0 ;//判断b是否到了结束了,该不该重置复制位置
}
}
strcpy(b,buf);//把复制后的数组复制给b。
puts(a);
puts(b);
}

如果你要输入两个字符串来的话,用gets就可以了
第2个回答  2012-05-25
你的方法也许可行,但是不是老师想让你用的方法。
通过观察下面
"i am a student"
"k ey k eykeyke"
可以看出b()中的空格位置是a()中的空格位置。
你先将a()和b()中的字符型常量通过ASCII转换为数字型,然后再将a()中的数依次换为b()中的,然后再转译回来。
第3个回答  2012-05-25
直接用puts()或getline()
第4个回答  2012-05-25
C早就忘光了,以下是JAVA编写的,思路一样啊,不知道你能否看懂?
//1、定义的源字符串
String s = "i am a student";
//2、定义目标字符串
String b = "key";
//3、定义替换后的字符串
String c = "";
//4、保存替换后剩余的目标字符串
String d = "";
//5、将源字符串按空格转换成数组
String[] abc = s.split(" ");
//6、开始替换
for(int i = 0;i<abc.length;i++)
{
//获取源字符串当前位置的长度
int j = abc[i].length();
//第一次循环,剩余的字符串=目标字符串
if("".equals(d))
{
d += b;
}
//如果剩余的字符串不足位数则先补上
while(d.length()<j)
{
d +=b;
}
//开始截取,长度与源字符串相同
c+=d.substring(0,j)+" ";
//剩下的保存到d中
d = d.substring(j,d.length());
}
System.out.println(c);
相似回答