c语言gets()函数问题

斯班奇的好朋友阿法法 2020-02-01 10:53:54
我用gets读取字符串, 用puts输出和strlen没问题, 为啥单个输出就有bug 结尾标记不是'\0'吗? 用的vc6.0
...全文
227 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Spicy__Chicken 2020-02-03
  • 打赏
  • 举报
回复
引用 2 楼 哟呵咯游 的回复:
额,那我这是编译器的问题么
我也不太懂,觉得跟编译器关系不大吧。你结尾加没加 return 0?或者 1 往后的数字确实可能是编译器在程序运行完成之后显示的什么值。要不你在 for 循环之后再加个打印换行看看啥结果。
qybao 2020-02-03
  • 打赏
  • 举报
回复
引用 5 楼 哟呵咯游 的回复:
新建数组都要初始化吗?
我记得整型就没这个问题

整形也需要初始化的(当然除非有的编译器自动初始化了)
可以参考以下帖子,没有初始化时整形数组打印出来的信息
https://bbs.csdn.net/topics/395735254
  • 打赏
  • 举报
回复
引用 4 楼 qybao的回复:
你没有初始化s,所以数组里的信息是不确定的,即s[1]不一定是'\0'
有的编译器可能会帮你初始化,有的可能不会,所以最好还是自己初始化一下
memset(s, '\0', sizeof(s));
新建数组都要初始化吗? 我记得整型就没这个问题
qybao 2020-02-03
  • 打赏
  • 举报
回复
你没有初始化s,所以数组里的信息是不确定的,即s[1]不一定是'\0'
有的编译器可能会帮你初始化,有的可能不会,所以最好还是自己初始化一下
memset(s, '\0', sizeof(s));

Spicy__Chicken 2020-02-02
  • 打赏
  • 举报
回复
首先你使用了 cout 和 endl,这不是 C++ 么,你好像来错论坛了。另外我用codeblocks编译了一下并没有什么问题。
  • 打赏
  • 举报
回复
额,那我这是编译器的问题么

70,014

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧