2017年12月14日 星期四

[C] how to revert a string

#include <stdio.h>
#include <string.h>

#define SWAP(a,b) do{\
 a^=b;\
 b^=a;\
 a^=b;\
 } while(0)

void revert(char *str)
{
char* end = str+strlen(str)-1;

if(str){
while(str<end){
SWAP(*str,*end);
str++;
end--;
}
}
}

int main(int argc, char* argv[]){
char* str = argv[1];
if(str){
revert(str);
printf("%s\n",str);
}
else{
printf("%s\n","type a string !!!!");
}
}

注意:

  1. SWAP 的巨集:
    1. 第一個XOR昰得到兩數的異同
    2. 第二三則是,藉此做相同不變,不同變的動作
  2. argv為array of point to string, 0:指到程式本身 1~N: 則是後面接的字串