我的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);
//.....
}当我尝试打印1或2值时,如果打印2或更多的字符串值,就会崩溃。
segfault, error 6 in /var/log/messages.我做错了什么?
问题不在这个代码片段里,抱歉。
unsigned int vm_users;
if (valueOfParam("users")){
printf("==%s", vm_users);
//vm_users = atoi(valueOfParam("users"));
}尤其是行(如果取消注释,则为崩溃)
vm_users = atoi(valueOfParam("users"));发布于 2017-10-24 11:45:49
很抱歉给您带来不便。
这个问题最终证明是不确定的变量。我只需要给他们分配一个零,问题就解决了。我感到惊讶的是,如果没有显式地指定任何一个变量,那么在处理其他变量时,程序可能会崩溃。
我会在一段时间后删除这个问题,因为它是不正确的。
发布于 2017-10-24 11:40:50
printf("vm_title=%s \n<br>", vm_title);取消空指针,您将得到SEGFAULT,这并不令人惊讶,但是预期的。
下一首
vm_users = atoi(valueOfParam("users"));空指针在atoi函数中取消引用
unsigned int vm_users;
if (valueOfParam("users")){
printf("==%s", vm_users);
//vm_users = atoi(valueOfParam("users"));
}在这里,您从未初始化的无符号int变量-另一个UB中抛出去引用指针。
顺便说一下,在10行代码中有这么多的瑞银。我的建议-先读一本C书,然后再读代码。
https://stackoverflow.com/questions/46908887
复制相似问题