2

所以我写了以下方法:

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

2 回答 2

5
char *charArray1 = "ThisHasAColonAtTheEnd:";` 

在这里,您将 charArray1 指向一个字符串文字。在 C 中,您不能修改文字。参见例如这个问题

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

char charArray1[] = "ThisHasAColonAtTheEnd:"; 
于 2013-11-18T19:57:31.250 回答
0

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

顺便提一句。取决于编译器和执行环境,它可能实际工作——例如在某些嵌入式系统上。

于 2013-11-18T19:58:01.953 回答