我想在字符串末尾添加“$”,我看到我可以使用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);
答案 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,"$");