c语言最后输出一堆?

毕设小屋 论文问答 1

设计一个函数 char *insert(char *s1, char *s2), 字符串s1为原字符串,s2为新字符串,新的字符串是在原来字符串中每两个字符之间插入一个空格, 如原来的字符串为“abcd”,新产生的字符串应为“a b c d”(注意,最后一个字符后面不要插入空格)。 函数返回新字符串的首地址。原字符串在主函数中用键盘输入方式得到,调用函数后,再输出新字符串的内容。 问一下问什么最后会出现一堆??

回复

共2条回复 我来回复
  • 代码港湾
    这个人很懒,什么都没有留下~
    评论

    仅供参考:

    #include<stdio.h>
    char *insert(char *s1,char *s2)
    {
        char *p1=s1,*p2=s2;
        while(*p1)
        {
            *p2++ = *p1++;
            if(*p1 != '\0') *p2++ = ' ';
        }
        *p2 = '\0';
        return s2;
    }
    int main()
    {
        char a[20],b[50],*p;
        scanf("%s",a);
        p = insert(a,b);
        printf("%s\n",p);
        return 0;
    }
    
    0条评论
  • 毕设导航
    这个人很懒,什么都没有留下~
    评论

    字符串结尾要用 \0 作为结束标识 将代码初始化部分改为 char b[50]={0}; 即可

    0条评论

发表回复

登录后才能评论