试图删除C中char数组中的最后一个字符

时间:2013-11-18 19:54:42

标签: c string arrays null-terminated

所以我写了以下方法:

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);

2 个答案:

答案 0 :(得分:5)

char *charArray1 = "ThisHasAColonAtTheEnd:";` 

在这里,您将charArray1指向字符串文字。在C中,您无法修改文字。请参见例如this question

您可以将字符串存储在可以修改的数组中。所以就这样做

char charArray1[] = "ThisHasAColonAtTheEnd:"; 

答案 1 :(得分:0)

这里的问题可能是您的字符串在只读区域中分配,因此您无法更改它。拳头复制并编辑副本。

顺便说一句。根据编译器和执行环境,它实际上可以工作 - 例如在某些嵌入式系统上。