我想在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