没遇到过的C错误

标签 c variables pointers integer

shell_command(char gcommand[100]) {
    FILE *pipe = popen("ls", "r");
    char output[100];

    if ( pipe ) {
        fgets(output, sizeof output, pipe);
        pclose(pipe);
    }
    return output;
}

结果

program.c: In function ‘shell_command’:
program.c:42: warning: return makes integer from pointer without a cast
program.c:42: warning: function returns address of local variable

我用谷歌搜索了两天没有成功

最佳答案

您已将函数声明为

shell_command(char gcommand[100])

被编译器解释为

int shell_command(char gcommand[100])

如你所愿

char* shell_command(char gcommand[100])

这是行不通的,因为输出是一个堆栈变量并返回未定义的行为,正如您的编译器告诉您的那样。

关于没遇到过的C错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328178/

相关文章:

c - 从文件中添加数字的示例 C 程序

php - Jquery从脚本标签传递参数

JavaScript 将变量声明为 "g = g || {}; "这意味着什么?

php - 没有错误,但页面仍然空白并传递变量

c - 在变量参数函数中使用字符串指针

c++ - 迭代器两个**的含义

c - 将指针的结构数组作为函数参数传递?

在VxWorks中关闭设备/套接字

c - 如何检查标准输出是否已在 Windows 上重定向到 NUL(在 Linux 上也称为/dev/null)?

c - 指向指针的结构名称的 Typedef