使用sprintf在C中连接整数和char

时间:2014-03-17 22:23:16

标签: c segmentation-fault string-concatenation printf

在我用C编程的赋值中,我需要将符号'#'和一个整数(例如16)连接到字符串“#16”。这不是打印出来的,而是作为参数传递给另一个函数。根据我的理解,我应该使用函数sprintf。但是,我得到了分段错误,所以我显然没有做对。 我会给你一个例子,你可以告诉我我做错了什么:

void methodA(){
    char* input;
    sprintf(input, "#%d", 16);
    methodB(input);
}

void methodB(int a){
    // Code here

    // Sacrifice the power of a to Darth Sidious
}
编辑:对于那些先回答的人:char输入是一个拼写错误,它应该说char *输入,我已经知道了。对不起。

3 个答案:

答案 0 :(得分:3)

sprintf需要char*,而非char

int sprintf(char *str, const char *format, ...);

是的,更喜欢使用snprintf

答案 1 :(得分:1)

您没有初始化输入,因此它指向未定义的内存。首先分配内存

void methodA(){
    char input[SIZE];  // or char* input = malloc(SIZE);
    sprintf(input, "#%d", 16);
    methodB(input);
}

答案 2 :(得分:0)

void methodA(){
    char input[4];
    sprintf(&input[0], "#%d", 16);
    methodB(&input[0]);
}

void methodB(char *a){
    // Code here

    // Sacrifice the power of a to Darth Sidious
}

注意,我使用'& x [offset]'样式清楚地表明我们正在传递数组第一个元素的地址。