首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多打印不工作错误6

多打印不工作错误6
EN

Stack Overflow用户
提问于 2017-10-24 11:04:50
回答 2查看 62关注 0票数 0

我的c程序输出有问题。

代码语言:javascript
复制
#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或更多的字符串值,就会崩溃。

代码语言:javascript
复制
segfault, error 6 in /var/log/messages.

我做错了什么?

问题不在这个代码片段里,抱歉。

代码语言:javascript
复制
unsigned int vm_users;                              
if (valueOfParam("users")){
    printf("==%s", vm_users);
    //vm_users  = atoi(valueOfParam("users"));
}

尤其是行(如果取消注释,则为崩溃)

代码语言:javascript
复制
vm_users  = atoi(valueOfParam("users"));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-24 11:45:49

很抱歉给您带来不便。

这个问题最终证明是不确定的变量。我只需要给他们分配一个零,问题就解决了。我感到惊讶的是,如果没有显式地指定任何一个变量,那么在处理其他变量时,程序可能会崩溃。

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

票数 0
EN

Stack Overflow用户

发布于 2017-10-24 11:40:50

printf("vm_title=%s \n<br>", vm_title);取消空指针,您将得到SEGFAULT,这并不令人惊讶,但是预期的。

下一首

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

代码语言:javascript
复制
unsigned int vm_users;                              
if (valueOfParam("users")){
    printf("==%s", vm_users);
    //vm_users  = atoi(valueOfParam("users"));
}

在这里,您从未初始化的无符号int变量-另一个UB中抛出去引用指针。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46908887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档