Terraria_steve 2020-12-02 18:22 采纳率: 100%
浏览 27
已采纳

这个是咋回事啊,救救孩子吧

 

  • 写回答

2条回答 默认 最新

  • DY老王 2020-12-02 23:30
    关注

    首先,我觉得你的逻辑应该是想找出数组s1和s2中不同的字符,放在数组s3中,再输出s3。

    有两个点的错误。

    1. C语言的字符串是有结尾标志的,即'\0'。但是在字符串(字符数组)s3中并没有结尾符,这是导致你输出的时候内存溢出的根本原因。

    2. 在第15行的输出语句是有毛病的,它输出的是数组s3每一个元素的地址。C程序在使用printf输出字符串的时候,是可以传首字符的地址作为参数的,这是OK的。不过前提是这个字符串(即字符数组)是带有结束符标志的,这样程序才知道我输出到哪里就可以结束输出了。因为s3字符串不带结束符,所以程序会一直往后寻找结束符,就导致程序访问了不该访问的内存,即内存溢出。

     

    修改方案:

    1.以字符的形式逐个输出s3;

    for (i = 0; i < m; i++) {
        printf("%c", s3[i]);
    }

    2.在字符串s3后面添加一个'\0'结束符,直接输出一次首元素地址即可;

    s3[m] = '\0';
    printf("%s", s3);
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料