我想在C中编写简单的removeAt(char * str,int pos),但被结果困惑。从c字符串中删除charAt
char c[] = "abcdef";
char* c1 = removeAt(c, 3);
cout << c1;
如果我这样做了这种方式:
static char* removeAt(char* str, int pos)
{
int i = 0;
for(i = pos; str[i] != '\0'; i++)
{
str[i] = str[++i];
}
str[i] = '\0';
return str;
}
字符串保持不变“ABCDEF”;
如果我这样做:
static char* removeAt(char* str, int pos)
{
int i, k =0;
for(i = pos, k = pos; str[i] != '\0'; i++)
{
str[i] = str[++k];
}
str[i] = '\0';
return str;
}
没有工作的打算。
在你的第一个例子中,你每循环增加'i'两次。第二,你只增加一次'i'和'k'。 –
为什么不使用简单的'strcpy(str + pos,str + pos + 1);'? – unxnut
只是在玩面试准备的字符串操作,一直没有触及它。 – inside