我給出一個字符串作爲這樣的:使用的memmove到字符串複製到自身產生錯誤的輸出
"Hello World"
有了5個空格字符插圖中的兩個詞。我想刪除這兩個詞之間的所有空格。但是,我的代碼似乎只有3個或更少的空間時纔有效。我正在使用memmove
嘗試完成此操作。
這裏是我試過:
int main(void) {
char * word = malloc(sizeof(char)*16);
strcpy(word,"Hello World");
checkWords(word);
return 0;
}
void checkWords(char * word) {
int i;
for(i=0; i < strlen(word); i++) {
if(word[i] == ' ')
memmove(&word[i],&word[i+1],strlen(word)+1);
}
printf("The string without spaces is %s\n",word);
}
這裏的輸出爲"Hello World"
不"Hello World"
如果嘗試輸入如:
"Hello World" gets me "Hello World" -->correct
"Hello World" gets me "Hello World" -->correct
什麼比3米更大的空間,得到我不正確的輸出。 。(我想有兩個詞之間有一個空格
警告,使用'memmove',你必須處理'\ 0'字符。 – purplepsycho
我已更新我的代碼以使用memmove,問題仍然存在。有任何想法嗎? – rerere
試試這個if(word [i] ==''&& word [i + 1] =='')memmove(&word [i],&word [i + 1],strlen(word)+1);我 - ; }' – Karthick