使用strcat时的分段错误(最小示例)

时间:2013-03-09 20:10:20

标签: c

我想在字符串末尾添加“$”,我看到我可以使用strcat()并编写以下代码:

char *word = "1000";
const char *dollar = "$";
strcat(word,dollar);
printf("%s", word);

它编译,但是当我运行这个小程序时,我得到Segmentation fault (core dumped)。 错误在哪里?

我知道strcat是: char *strcat(char *dest, const char *src);

4 个答案:

答案 0 :(得分:8)

问题是您正在尝试连接到文字字符串。文字字符串是常量,不能更改。

您需要将“目标”创建为数组,包含足够的字符以适合您的连接:

char word[16] = "1000";

上面数组中的数字16我选择了任意。它必须至少足够大,以适应您放入其中的字符串,加上您连接的字符串的长度,以及终止'\0'字符。

答案 1 :(得分:5)

  

错误在哪里?

你的意思是 错误,对吗?

第一个是字符串文字是只读的。您不能只strcat()加上"1000"之类的字符串常量。

第二个是你最后没有足够的空间存放美元符号。你需要的是:

// 6 characters: '1', '0', '0', '0', '$' and the terminating NUL
char word[6] = "1000";
strcat(word, "$");

答案 2 :(得分:0)

如果我没错,这应该有效:

char word[255] = "1000"; //Creating an array with 255 elements
const char dollar = '$'; //dollar is a single constant character '$'
word[4] = dollar; //the fourth element of the array, right after the 1000, becomes $

printf("%s", word);

答案 3 :(得分:0)

使它成为一组字符。

char example[100];
strcat (example,"$");