凊(◦˙▽˙◦) 2022-03-08 16:18 采纳率: 88%
浏览 33
已结题

运行之后就提示 a[j++]=’ ’; 出现异常 •﹏•

编写函数fun,函数fun 的功能是:将字符串a中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。编写主函数,输入输出在主函数中进行。
#include<stdio.h>
void fun(char* p, char* a)
{
int i = 0, j = 0;
while (*p)
{
while (i < 3 && *p)
{
a[j] = *p;
j++;
p++;
i++;
}
if (*p)
a[j++] = ' ';
}
a[j] = '\0';
}
int main()
{
char s[100]={0}, a[100];
printf("输入:");
gets_s(s);
printf("复制:");
puts(s);
fun(s, a);
puts(a);
return 0;

}

  • 写回答

4条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-03-08 18:27
    关注

    大致改了一下,主要就是循环那里少了i=0的初始化,改正后正常:

    #include<stdio.h>
    void fun(char*p,char*a)
    {
        int i,j=0;
        while(*p)
        {
            i=0;  //主要修改处:i每次循环都需要初始化 所以放在第一层循环中
            while(i<3&&*p)
            {
                a[j]=*p;
                j++;
                p++;
                i++;
            }
            if(*p)
                a[j++]=' ';
        }
        a[j]='\0';
    }
    int main()
    {
        char s[80],a[80]; //这里换了一下,题主那样写也可以
        printf("输入:");
        gets(s);
        printf("输入:");
        puts(s);
        fun(s,a);
        printf("\n插入空格后的:");
        puts(a);
        printf("\n\n");
        return 0;
    }
    
    

    运行结果如图:

    img

    希望对题主有所帮助,可以的话,帮忙点个采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊