C言語で文字列を逆順にする方法は?

以下の方法を使用して C 言語で文字列を逆にできます。

  1. ポインターを利用:文字列の先頭位置を指すポインターと、末尾位置を指すポインターの2つを定義し、ポインターが指す文字を入れ替えることで文字列を逆順にする。2つのポインターが交差するまで入れ替えを繰り返す。
void reverseString(char* str) {
    if (str == NULL) {
        return;
    }
    
    char* start = str;
    char* end = str + strlen(str) - 1;
    
    while (start < end) {
        char temp = *start;
        *start = *end;
        *end = temp;
        
        start++;
        end--;
    }
}
  1. 配列を使うと、新しい文字配列を作成して、元の文字列の文字を末尾から順に新しい配列にコピーすることで、逆順になった文字列を取得できます。
void reverseString(char* str) {
    if (str == NULL) {
        return;
    }

    int length = strlen(str);
    char reversed[length + 1];
    
    for (int i = length - 1; i >= 0; i--) {
        reversed[length - 1 - i] = str[i];
    }
    reversed[length] = '\0';
    
    strcpy(str, reversed);
}

どちらの方法も文字列の逆転を実現できますが、どちらを使用するかは実際のニーズと個人的な好みに応じて異なります。

bannerAds