【发布时间】:2014-04-23 09:15:47
【问题描述】:
在我用 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* 输入,我已经知道了。对此感到抱歉。
【问题讨论】:
-
您正在
sprintf将您的字符串放入一个单字符缓冲区。其次,您将char传递给methodB,它期待int。 -
你声明
char* input;为指针分配空间,而不是为它指向 at 的任何东西(就像一个大到足以容纳至少 4 个字符的数组)。此外,您的methodB()期待int,这不是您传递的内容。
标签: c segmentation-fault string-concatenation printf