|
> 10-2(2)のところにある演習問題の、問3の解答例です。
ポインタをデクリメントすることなしに、文字列を反転するプログラムです。
再帰呼び出しを使っているので、時間とメモリーを無駄に使いますが、
お遊びですので、面白いと思う人は、面白いと思ってください。
#include <stdio.h>
char *rev(const char *p1, char *p2)
{
if (*p1 == '\0') return p2;
p2 = rev(p1 + 1, p2);
*p2 = *p1;
return p2 + 1;
}
int main()
{
char str1[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char str2[30];
*rev(str1, str2) = '\0';
printf("str1 = %s\n", str1);
printf("str2 = %s\n", str2);
return 0;
}
|