写代码翻转一个C风格的字符串。(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的 结束字符)
需要注意的是是否处理最后一个结束字符
#include <iostream> #include <cstring> using namespace std; /*将一个C风格的字符串反转 C风格的代码有结束字符,是要注意的可有reverse1() 如果忽略了的话,那么直接reverse2()就可以了 */ //此函数用的时候需注意,如果swap(a,a)会挂的。可以使用加法或中间变量法 void swap(char &a,char &b){ a = a^b; b = a^b; a = a^b; } //忽略结束字符 void reverse1(char *s){ if(!s) return; char *p = s,*q = s; while(*q) ++q; --q; while(p < q) swap(*p++,*q--); } //处理带有结束字符的情况 void reverse2(char *s){ int n = strlen(s); for(int i=0;i<n/2;++i) swap(s[i],s[n-1-i]); } int main(){ char s[] = "1234567890"; reverse1(s); cout<<s<<endl; return 0; }