爲什麼我的反向功能不可逆我的字符串返回你好!當我第二次打電話給我的功能?反轉功能陣列字符串
我能怎麼改變用我的功能來扭轉+ dereverse我的字符串多次?
#include <stdio.h> #include <stdlib.h> #include <string.h> void reverse(char arr[], int numberOfChars); int main() { char myString[] = "Hello!"; int length = strlen(myString); for (int i = 0; i < length; i++) { printf("%c", myString[i]); } printf("\n"); reverse(myString, length); reverse(myString, length); getchar(); return 0; } void reverse(char arr[], int numberOfChars) { for (int i = numberOfChars - 1; i >= 0; i--) { printf("%c", arr[i]); } getchar(); }
-2
A
回答
5
因爲你永遠不修改arr[]
內reverse()
,你只打印在你迭代的順序。
它應該是這樣的:
void reverse(char *s, size_t length)
{
for(size_t i = 0; i < length/2; ++i)
{
const size_t tail = length - (i + 1);
const char tmp = s[tail];
s[tail] = s[i];
s[i] = tmp;
}
}
也沒什麼奇怪的getchar()
呼叫reverse()
,那是沒有意義的。
0
您使用的是相同的字符串,第二次爲好。你的功能是無效的,你實際上沒有對字符串本身做任何事情,只是以相反的順序打印字母。你想要的東西,你應該爲你節省一個變量在做什麼,然後返回它,也許用一個函數來單獨打印。當你從main函數調用
0
的參數(MyString的),以反向功能在兩次相同。您只是以反向格式打印字符而不是在子模塊中反轉。
1
如果要扭轉的話「你好!」,這是更方便地把它定義爲字符串,然後使用reverse(myString.begin(), myString.end())
或reverse(&myString[0], myString.length())
功能reverse(p1, p2)
的參數應該是reverse(first_position, last_position)
此外,如果你真的想定義字符串爲char,你應該把它們內部的迭代,然後通過一個扭轉他們一個爲@unwind說。
有關reverse
功能的更多詳細信息可在http://www.cplusplus.com/reference/algorithm/reverse/
相關問題
- 1. 沒有陣列功能反向串
- 2. 反轉字符串C++無反向功能
- 3. 反向陣列功能
- 4. 字符串轉換爲矩陣(陣列)
- 5. 反轉文本字符的功能
- 6. 反轉字符串
- 7. 反轉字符串
- 8. 反轉字符串
- 9. 反轉字符串
- 10. 反轉字符串
- 11. 反向字符字陣列
- 12. 如何Ruby實現字符串反轉功能
- 13. Stange行爲與我的C字符串反轉功能
- 14. Java反轉節點字符串列表
- 15. 反轉陣列
- 16. 轉換陣列成一個字符串
- 17. 將字符串轉換爲int陣列
- 18. 陣列字符串轉換通知
- 19. 字符串轉換成陣列
- 20. 轉換陣列呈現爲字符串
- 21. 陣列到字符串轉換
- 22. 轉換陣列字符串爲int angularjs
- 23. 陣列到字符串轉換
- 24. 字符串到陣列轉換
- 25. Matlab的字符串轉換爲陣列
- 26. 陣列字符串轉換ArrayChoiceList
- 27. 轉換陣列連接字符串
- 28. 類似轉到功能追加字符串和陣列不表現爲預期
- 29. 陣列字符串
- 30. 陣列字符串
你是不是扭轉串被發現,你只是在逆順序打印 – Nish