写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格?

这一段是谭浩强书本的答案代码。为什么不用手动加结束符'\0'?voidinsert(charstr[]){inti;for(i=strlen(str);i>0;i--){... 这一段是谭浩强书本的答案代码。为什么不用手动加结束符'\0'?
void insert(char str[])
{
int i;
for (i = strlen(str); i > 0; i--)
{
str[2 * i] = str[i];
str[2 * i - 1] = ' ';
}
printf("output:\n%s\n", str);

}
展开
 我来答
zhongtyler
2020-05-12 · TA获得超过4408个赞
知道大有可为答主
回答量:4384
采纳率:79%
帮助的人:936万
展开全部
这段代码其实是有很多bug,不过在要求比较简单的情况下。也没有大问题。
这个代码是假设已经给str[]分配了足够的空间。那么在初始化时,其实整个数组已经用 \0填充满了。只要你的字符串是变长,而不是变短。那么后端自然就是 \0
司马刀剑
高粉答主

2020-05-12 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7597万
展开全部
将b[100]先初始化,可以解决问题
#include<stdio.h>
#include<string.h>
int main()
{
void num_space(char a[],char b[]);
char a[100],b[100]="";
printf("请输入任意四位来数:");
gets(a);
num_space(a,b);
printf("%s\n",b);
return 0;
}
void num_space(char a[100],char b[100])
{
int i,j=0;
for(i=0;a[i]!='\0';i++)
{
b[j++]=a[i];
b[j++]=' ';
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式