1.使用string.h中的strrev函數
#include <iostream> #include <cstring> using namespace std; int main() { char s[]="hello"; strrev(s); cout<<s<<endl; return 0; }
2.使用algorithm中的reverse函數
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string s = "hello"; reverse(s.begin(),s.end()); cout<<s<<endl; return 0; }
3.自己編寫
#include <iostream> using namespace std; void Reverse(char *s,int n){ for(int i=0,j=n-1;i<j;i++,j--){ char c=s[i]; s[i]=s[j]; s[j]=c; } } int main() { char s[]="hello"; Reverse(s,5); cout<<s<<endl; return 0; }
或者
char *revstr(char *str, size_t len) { char *start = str; char *end = str + len - 1; char ch; if (str != NULL) { while (start < end) { ch = *start; *start++ = *end; *end-- = ch; } } return str; }
C語言中所謂的字符串不過是字符數組,后跟一個0x00字符標識結尾,所以反轉起來很容易,只要一個循環依次將第一個字符和最后一個字符交換,第二個字符和倒數第二個字符交換……如果最中間有兩個字符(即需要反轉的字符串長度為偶數),那就交換,如果最中間有一個字符(即需要反轉的字符串長度為奇數),那就不需要碰它。還有就是最后一個用來標識字符串結尾的0x00字符不用動它。