打印函数的返回值时出现分段错误

时间:2013-08-02 20:50:34

标签: c string

每当我尝试做的时候:

char buffed[1024];
snprintf(buffed, sizeof(buffed), "bash.sh %s &", get_value("request-uri"));
system(buffed);

这是我使用的功能:

char *get_value(char *name) {
        FORMAT_NODE *node;

#ifdef DEBUG
        ASSERT(name);
#endif

        if (strlen(name) == 0)
                return EMPTY_FIELD;

        if ((node = get_field(name))) {
                return node->value;
        } else {
                return EMPTY_FIELD;
        }
}

编译是可以的但是无论什么时候应该打印它会导致分段错误和崩溃,有人可以解释一下我做错了什么吗?

提前致谢!

编辑:

get_value(“request-uri”)是我正在谈论的那个,它应该是一个字符串

strstr(get_value(“request-uri”),“index.php”)完美无缺!

但“index.php”应该来自get_value

EDIT2: GDB: 程序接收信号SIGSEGV,分段故障。 来自/lib64/libc.so.6的__strlen_sse2()中的0x00007ffff73f3321

1 个答案:

答案 0 :(得分:0)

这里的问题由CBIII解决,告诉我使用gdb,该值为空,因为它在使用之前已刷新。

get_value(“request-uri”)返回0x0