2

我想在字符串的末尾添加“$”,我已经看到我可以使用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

4 回答 4

8

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

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

char word[16] = "1000";

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

于 2013-03-09T20:12:03.940 回答
5

错误在哪里?

你的意思错误在哪里,对吧?

第一个是字符串文字是只读的。您不能只strcat()使用字符串常量,例如"1000".

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

// 6 characters: '1', '0', '0', '0', '$' and the terminating NUL
char word[6] = "1000";
strcat(word, "$");
于 2013-03-09T20:12:58.080 回答
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);
于 2013-03-09T20:17:43.240 回答
0

使它成为一个字符数组。

char example[100];
strcat (example,"$");
于 2013-03-09T20:18:05.097 回答