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

其实原题是两个字符串数组a和b,例如a()="iamastudent";b()="key"要求b()变成"keykeykeyke"我的想法是先把b()变成"keykeyk... 其实原题是 两个字符串数组a和b,
例如 a( )= "i am a student" ;b()="key"
要求b()变成 "k ey k eykeyke"
我的想法是先把b()变成"keykeykeykeyk",然后插入空格,但不知怎么弄
如果有更直接或更好用的方法麻烦直接给出方法或代码
展开
 我来答
xoaxa
推荐于2017-09-17 · TA获得超过8609个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3466万
展开全部
#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;
}
武荆轲
2012-05-25 · TA获得超过1026个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:297万
展开全部
其实很简单的,这是代码:
#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就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
9527乐百氏
2012-05-25 · 超过23用户采纳过TA的回答
知道答主
回答量:189
采纳率:0%
帮助的人:43.8万
展开全部
你的方法也许可行,但是不是老师想让你用的方法。
通过观察下面
"i am a student"
"k ey k eykeyke"
可以看出b()中的空格位置是a()中的空格位置。
你先将a()和b()中的字符型常量通过ASCII转换为数字型,然后再将a()中的数依次换为b()中的,然后再转译回来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
馨富白e
2012-05-25 · TA获得超过147个赞
知道答主
回答量:298
采纳率:0%
帮助的人:88.1万
展开全部
直接用puts()或getline()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霜_河
2012-05-25 · TA获得超过479个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:212万
展开全部
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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式