所以我写了以下方法:
void removeEndingColon(char *charArrayWithColon) {
// remove ':' from variableName
size_t indexOfNullTerminator = strlen(charArrayWithColon);
charArrayWithColon[indexOfNullTerminator - 1] = '\0'; // replace ':' with '\0'
}
但是当我在eclipse中使用以下代码测试它时,我没有输出,我不知道为什么我的可执行文件无法运行。
char *charArray1 = "ThisHasAColonAtTheEnd:";
removeEndingColon(charArray1);
答案 0 :(得分:5)
char *charArray1 = "ThisHasAColonAtTheEnd:";`
在这里,您将charArray1指向字符串文字。在C中,您无法修改文字。请参见例如this question
您可以将字符串存储在可以修改的数组中。所以就这样做
char charArray1[] = "ThisHasAColonAtTheEnd:";
答案 1 :(得分:0)
这里的问题可能是您的字符串在只读区域中分配,因此您无法更改它。拳头复制并编辑副本。
顺便说一句。根据编译器和执行环境,它实际上可以工作 - 例如在某些嵌入式系统上。