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

Q L*_*Liu 2 c arrays string null-terminated

所以我写了以下方法:

void removeEndingColon(char *charArrayWithColon) {
    // remove ':' from variableName
    size_t indexOfNullTerminator = strlen(charArrayWithColon);
    charArrayWithColon[indexOfNullTerminator - 1] = '\0'; // replace ':' with '\0'
}
Run Code Online (Sandbox Code Playgroud)

但是当我在eclipse中使用以下代码测试它时,我没有输出,我不知道为什么我的可执行文件无法运行.

char *charArray1 = "ThisHasAColonAtTheEnd:";
removeEndingColon(charArray1);
Run Code Online (Sandbox Code Playgroud)

nos*_*nos 5

char *charArray1 = "ThisHasAColonAtTheEnd:";` 
Run Code Online (Sandbox Code Playgroud)

在这里,您将charArray1指向字符串文字.在C中,您无法修改文字.参见例如这个问题

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

char charArray1[] = "ThisHasAColonAtTheEnd:"; 
Run Code Online (Sandbox Code Playgroud)

  • @QuinnLiu下一次**打开编译器警告并注意它们.**在为非const`char*`分配字符串文字时应该收到警告. (3认同)