C:如何缩短第一个字母的字符串

时间:2014-11-20 13:02:42

标签: c string

这是我的问题: 我想缩短一个字符串,但一开始。例如" string"应该" tring"或者"帮助"应该成为" elp"。 它只需要是第一个字母。

有什么想法吗? 谢谢! =)

5 个答案:

答案 0 :(得分:8)

无论

string++;  /* Updates the pointer. */

或(假设string在可写内存中)

memmove(string, string+1, strlen(string));  /* Updates memory, including NUL character. */

答案 1 :(得分:2)

char* string = "hello";
char* string2 = string + 1;
printf("%s\n", string2); //prints "ello"

答案 2 :(得分:2)

<强> 1。动态分配内存 如果您准备保留原始字符串(为了释放任何内存),您可以使用

char* foo = string + 1;

但是必须保持原始指针以释放内存。 foo - 1 恢复原始指针,但很难看。

您也可以将字符串内容移回内存中的一个位置,但这将是O(N),但至少您不会更改指针值,因此性能损失可能值得程序稳定性的增益。甚至认为关于使用strcpy,因为只有在内存不相交时才有效:请改用memmove

<强> 2。只读文字 如果字符串是通过const char* string = "hello";之类的东西出现的,那么你可以定义

const char* foo = string + 1;

泄漏内存。

答案 3 :(得分:1)

str2 = strcpy(str2,&amp; str [1]);

str2 = strncpy(str2,&amp; str [1],strlen(str) - 1);

答案 4 :(得分:0)

如果您想节省内存,可以尝试使用memmove(3),如下所示:

char *string = "Hello\0";
memmove(string, string + 1, strlen(string));

这会将“ello \ 0”移动到之前“Hello”的位置。因此,您只使用相同的内存空间,不要使用任何额外的内容。