計算機科学のブログ

C - 文字列 - 文字列理論 - ポインタ演算、逆順

Head First C ―頭とからだで覚えるCの基本David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の 2.5章(文字列 - 文字列理論)、p.97(コードマグネット)の解答を求めてみる。

コード

main.c

#include <stdio.h>
#include <string.h>
void print_reverse(char *s)
{
    size_t len = strlen(s);
    char *t = s + len - 1;
    while (t >= s)
    {
        printf("%c", *t);
        t--;
    }
    puts("");
}
int main(int argc, char const *argv[])
{
    char words[][5] = {
        "",
        "a",
        "ab",
        "abcde",
    };
    for (size_t i = 0; i < 4; i++)
    {
        puts("-----");
        puts(words[i]);
        print_reverse(words[i]);
    }
}

入出力結果(Terminal, Zsh)

% cc main.c && ./a.out
-----


-----
a
a
-----
ab
ba
-----
abcde
edcba
%