【发布时间】:2015-01-02 23:54:06
【问题描述】:
我正在编写一个程序,它从标准输入返回一个字符串,但我收到警告,它返回一个本地变量的地址。如何返回字符串?
提前致谢
#include <stdio.h>
char* readLine()
{
int i;
char input[1024];
for(i=0;i<1024;i++)
{
input[i]=fgetc(stdin);
if(input[i]=='\n')
{
break;
}
}
return input;
}
int main()
{
printf("%s",readLine());
return 0;
}
【问题讨论】:
-
你正在从一个函数返回一个本地对象,一旦函数返回,它的生命周期就结束了。动态分配内存或传递可以从函数返回的变量。
-
这样可以吗? #include
#include void nacitajRiadok(char *input[1024]) { int i; for(i=0;i -
您应该复制编译器准确告诉您的内容。对于您的问题,错误是显而易见的(返回一个没有复制语义的变量)。您应该始终提供您所拥有的最多信息来帮助其他帮助您的人。
-
第二个解决方案没有任何警告,所以我认为它还可以
-
这里有一个很好的例子,说明如何在 C 语言中使用字符串和指针做不同的事情 stackoverflow.com/a/46344713/5842403