关于字符串的疑问
c语言吧
全部回复
仅看楼主
level 12
傳說之魚🐟
楼主
1.为什么定义的数组只有五个字节,但是strlen(c)的结果却可以是18。5不应该是上限吗?
2.为什么输出只输出了8个?不应该要么是5个加一个乱码,要么全都能输出吗?
(我的等级全是签到签的,不要攻击楼主
)
2023年02月05日 12点02分
1
level 11
金色潜鸟
这是 改用 scanf_s() 放弃使用 scanf 的原因 。
拍入的字符串长度 超出 char c[5] 的内存,引起程序崩溃,所以 后面 出现的情况 不能用 常理 推理 和 思维,也 不值得 进一步花时间 研究 为何 这个 编译器 下 错成这样,那个 编译器 下 错成那样。你把 char c[5] 改 char c[80] 就是啦。
还有 对你来说, scanf("%s", c); 不要写成 &c;
2023年02月05日 13点02分
2
level 1
五次围攻
未定义行为
2023年02月05日 13点02分
3
level 14
🍀草酱🍀
未定义行为是不可预测,研究没有任何意义
2023年02月05日 13点02分
4
1