在我用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 *输入,我已经知道了。对不起。
答案 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]'样式清楚地表明我们正在传递数组第一个元素的地址。