-3

如何从 char* 末尾删除字符?我有:“123456ABC”,我想要:“123456”。谢谢!

4

3 回答 3

6

您可以将其中一个元素设置为空字符。假设您想将字符串“123456ABC”缩减为“123456”,您可以这样做,

str[6] = '\0';

但字符串的其余部分仍将为其分配内存。您可能想要做的是创建一个新字符串并将旧字符串的所需部分复制到其中,然后删除旧字符串。

于 2012-10-09T01:16:09.763 回答
1

如果您有所需剩余字符串的长度 length,请设置str[length]='\0'并执行以下操作:

// Assuming str was obtained through malloc/realloc functions.
str = realloc(str, sizeof(char)*(1+length));

这样,您可以缩短概念字符串及其使用的内存,以防您想优化!

编辑:感谢 Jim Balter 对我最初的提案提出了问题!

于 2012-10-09T01:30:48.467 回答
1

用 '\0' 终止 char * 字符串。

char c[] = "123456ABC";
c[6] = '\0';
于 2012-10-09T01:16:28.013 回答