我写了以下内容:
#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;
}
我知道 str
的长度必须小于 10,但即使我只写了“Hi”,也没有打印任何内容。据我所知,应该没问题。编译器说 fgets 很危险,不应该使用
。
屏幕上什么都不打印是什么原因?
最佳答案
char str[10];
// ...
return str;
这是错误的!!!局部变量在其作用域退出时失效;因此使用返回的数组是未定义的行为。你必须 malloc 一个字符串并返回它:
return strdup(str);
关于c - C 中的字符串和字符串函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11517298/