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
%