我写了以下内容:
#include <stdio.h>
#include <string.h>
char* getString();
char* getString(){
char str[10];
gets(str);
return str;
}
int main() {
char* s;
s=getString();
strcpy(s,"Hi");
puts(s);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道长度str必须小于10,但即使我只写"嗨",也没有任何东西被打印出来.据我所知,它应该是好的.编译器说fgets is dangerous and should not be used.
什么原因没有在屏幕上打印?
小智 6
char str[10];
// ...
return str;
Run Code Online (Sandbox Code Playgroud)
这是错误的!当范围退出时,局部变量无效; 因此使用返回数组是未定义的行为.你必须malloc一个字符串并返回它:
return strdup(str);
Run Code Online (Sandbox Code Playgroud)