【发布时间】:2017-02-08 14:38:02
【问题描述】:
我有以下代码:
char *str;
gets(str);
现在它可以在 turbo c 中工作,但在 devc 中却失败了。
我必须添加以下内容才能使其在 devC++ 中工作。
char *str = malloc(5);
谁能解释一下,为什么会这样?
还有,哪个是真实的和更正确的编码形式。
【问题讨论】:
-
1) 不要使用
gets()2) 未分配字符串的未定义行为。 -
为什么它“在 Turbo C 中工作”是个谜,因为没有为指针分配内存。
-
您可能想阅读
gets。 -
定义指针变量
str时,它指向哪里?它需要指向某个内存,gets(真的不使用它)写入它读取的字符。
标签: c string pointers compiler-specific