生发剂259 2022-06-23 12:50 采纳率: 0%
浏览 17

字符串超过限制长度不报错

问题遇到的现象和发生背景

输入超过限制字符串长度,为什么还是能全部输出?

问题相关代码,请勿粘贴截图

#include <stdio.h>
#include <stdlib.h>
int main(){
char word[8];
char word2[8];
scanf("%s",word);
scanf("%s",word2);
printf("%s##%s##\n",word,word2);
return 0;
}

运行结果及报错内容

ewqeeqe
eqweqweeqw
ewqeeqe##eqweqweeqw##

我的解答思路和尝试过的方法

为什么没有因为限制长度8,而报错。

我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 於黾 2022-06-23 13:10
    关注

    因为c语言是基于指针的
    指针指向哪里,就去哪里的内存存取,而不判断指针是否已经越界
    所以要么你自己想办法保证指针不要越界
    要么换c#之类的更安全的编程语言
    用指针就是更有效率但是不安全,鱼和熊掌不可兼得
    -=-=-=
    另,c语言不会抛异常,但是会因此造成数据错乱
    比如你把代码颠倒一下,先赋值给b,再赋值给a,同时越界,那么a的字符串会有一部分占据b的地址,导致b的内容不是一开始你输入的内容

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月23日

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退