當前位置:編程學習大全網 - 編程軟體 - 編程實現將壹個字符串倒序,並將倒序前和倒序後的字符串都輸出

編程實現將壹個字符串倒序,並將倒序前和倒序後的字符串都輸出

#include?<stdio.h>

#include?<string.h>

//?字符串倒序可以使用strrev()函數,?這個只能反轉英文,反轉中文會出現亂碼

//?如果需要反轉中文可以使用_mbsrev()(#include?<mbstring.h>)(ANSI模式),?或者用wcsrev()(UNICODE模式),

char?*?myStrrev(char?*?s)

{

char?*?l?=?s,?*?h?=?s?+?strlen(s);

while(l?<?h)?{char?t?=?*l;?*l++?=?*--h;?*h?=?t;}

return?s;

}

int?charAdd(const?unsigned?char?*?ch)

{

if(*ch++?<=?0x80)?return?1;?//?英文

if(*ch>=?0x40)?return?2;?//?中文

else?return?0;?//?錯誤的字符

}

//?這個可以反轉中文

char?*?myMbsrev(char?*?s)

{

size_t?len?=?strlen(s);

unsigned?char?*?buf?=?new?unsigned?char[len?+?4];

unsigned?char?*?h?=?buf?+?len;

unsigned?char?*?l?=?(unsigned?char?*)s;

while(*l)

{

int?ll?=?charAdd(l);

if(ll?==?0)?break;

h?-=?ll;

memcpy(h,?l,?ll);

l?+=?ll;

}

memcpy(s,?h,?len);

delete?buf;

return?s;

}

int?main()

{

char?str[1024];

printf("請輸入壹個英文字符串?:?");

gets(str);

printf("妳輸入的字符串是?:?%s\n",?str);

printf("字符串反轉後是?:?%s\n",?myStrrev(str));

printf("請輸入壹個中文字符串?:?");

gets(str);

printf("妳輸入的字符串是?:?%s\n",?str);

printf("字符串反轉後是?:?%s\n",?myMbsrev(str));

return?0;

}

  • 上一篇:大學學習科學規劃。
  • 下一篇:亳州樂業陽光城小區周邊配套怎麽樣?
  • copyright 2024編程學習大全網