多个 printf 不起作用错误 6

multiple printf not work error 6

我的 c 程序输出有问题。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* valueOfParam (char *param) {
//some code but in this case result is null
    return NULL;
}

int main () {
//....
char *vm_title = valueOfParam("title"); 
unsigned int vm_vc; 
if (valueOfParam("vc"))
vm_vc = atoi(valueOfParam("vc"));           
unsigned int vm_dc; 
if (valueOfParam("dc"))
vm_dc  = atoi(valueOfParam("dc"));
unsigned int vm_cl; 
if (valueOfParam("cl"))
vm_cl = atoi(valueOfParam("cl"));
unsigned int vm_pl; 
if (valueOfParam("pl"))
vm_pl = atoi(valueOfParam("pl"));
//.....
printf("vm_title=%s \n<br>", vm_title);
printf("vm_vc=%d \n<br>", vm_vc);
printf("vm_dc=%d \n<br>", vm_dc);
printf("vm_cl=%d \n<br>", vm_cl);
//.....
}

当我尝试打印 12 值时,一切都很好,如果我打印 2 或更多字符串值,我会崩溃并且

segfault, error 6 in /var/log/messages.

我做错了什么?

P.S。问题不在这个代码片段,抱歉。

unsigned int vm_users;                              
if (valueOfParam("users")){
    printf("==%s", vm_users);
    //vm_users  = atoi(valueOfParam("users"));
}

特别是行(如果取消注释会崩溃)

vm_users  = atoi(valueOfParam("users"));

printf("vm_title=%s \n<br>", vm_title); 取消引用 NULL 指针,您将得到 SEGFAULT,这并不奇怪,但在意料之中。

下一个

vm_users = atoi(valueOfParam("users")); NULL 指针在 atoi 函数中取消引用

unsigned int vm_users;                              
if (valueOfParam("users")){
    printf("==%s", vm_users);
    //vm_users  = atoi(valueOfParam("users"));
}

在这里您取消引用从未初始化的 unsigned int 变量转换的指针 - 另一个 UB。

顺便说一句,10 行代码中有这么多 UB。我的建议 - 先读一本 C 书,然后再写代码。

对于给您带来的不便,我们深表歉意。

原来是不确定变量的问题。我只需要给它们分配一个零,问题就解决了。 我很惊讶没有明确指定任何一个变量可能会在处理其他变量时使程序崩溃。

一段时间后我会删除这个问题,因为它不正确。