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条)

报告相同问题?

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab