ViVi Home > 技術文書 > ポインタ入門 > 基礎演習問題> strrev


 

 

C/C++ ポインタ入門 > 文字列関数 > strrev
Nobuhide Tsuda
Nov-2013

文字列の文字順序反転:void my_strrev(char *str)

void my_strrev(char *str)
{
    int len = strlen(str);
    char *ptr = str + len;      // 末尾を指すポインタを用意
    for(int i = 0; i < len/2; ++i) {            //      len の半分の回数ループ
        char t = *--ptr;
        *ptr = *str;              //      *str++, *--ptr を交換
        *str++ = t;
    }
}

解説:

void my_strrev(char *str)
{
    int len = strlen(str);
    for(int i = 0; i < len/2; ++i) {		//	len の半分の回数ループ
        char t = str[i];
        str[i] = str[len - 1 - i];		//	str[i] , str[len - 1 - i] を交換
        str[len - 1 - i] = t;
    }
}

解説:

void my_strrev(char *str)
{
    int len = strlen(str);
    for(int i = 0; i < len/2; ++i) {		//	len の半分の回数ループ
        std::swap(str[i], str[len - 1 - i]);		//	str[i] , str[len - 1 - i] を交換
    }
}

 


前: | 次: