危笑丶依旧啊 2021-12-26 12:37 采纳率: 100%
浏览 18
已结题

为什么当我输入超过20个字符时,不会显示烫的错误呢?不是已经超出我定义的字符数组长度了吗

为什么当我输入超过20个字符时,不会显示烫的错误呢?不是已经超出我定义的字符数组长度了吗
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
这是程序是用来给输入的字符串每两个字符之间相隔一个空格用的。
#include<stdio.h>
int main()
{
 char *insert(char *s1,char *s2);
 char string1[20],string2[60];
 char *s1=string1,*s2=string2;
 printf("input zifuchuan\n");
 gets(s1);
 puts(insert(s1,s2));
 return 0;
}
char *insert(char *s1,char *s2)
{
 int i;
 for(i=0;*(s1+i)!='\0';i++)
 {
  if(*(s1+i+1)!='\0')
  *(s2+2*i+1)=' ';
  else *(s2+2*i+1)='\0';
  *(s2+2*i)=*(s1+i);
  
 }
 return(s2);
}

  • 写回答

1条回答 默认 最新

  • 五一编程 2021-12-26 13:39
    关注

    是因为内存地址是顺序分配的,所以,字符串指针一样可以指向超出字符数组长度的数据,但是这样的数据是没有保证的,不建议使用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?