文字列を一つ読み込み, それを逆順にした文字列(文字配列)を作って それを printf("%s\n",..) で出力する.
#include <stdio.h> main() { char word[80]; char tmp; int i; int last; scanf("%s", word); /* 文字列の読み込み */ for(last=0; word[last] != '\0'; last++); /* 文字列終端の 0 を探す; last はその添字 */ last--; /* last は最後の文字の添字になる */ i = 0; /* i は最初の文字の添字 */ while(i<last){ tmp = word[i]; /* この3行で, i と last の場所の文字を交換 */ word[i] = word[last]; word[last] = tmp; i++; last--; /* i と last の位置を一つずつ近づける */ } printf("%s\n", word); }文字列の長さが偶数の時と奇数の時で, ループからの抜け出し方が 少し違う点に注意. 偶数の時は, 最後のペアを交換して, i と last はすれ違って last<i となる. 奇数の時は, 最後のペアを交換して, i と last はどちらも中央の文字を 指して終了となる.
#include <stdio.h> main() { char word[80]; char tmp; char *i; char *last; scanf("%s", word); /* 文字列の読み込み */ for(last=word; *last != '\0'; last++); /* 文字列終端の 0 を探す; last はそこへのポインタ */ last--; /* last は最後の文字へのポインタになる */ i = word; /* i は最初の文字へのポインタ */ while(i<last){ tmp = *i; /* この3行で, i と last の場所の文字を交換 */ *i = *last; *last = tmp; i++; last--; /* i と last の位置を一つずつ近づける */ } printf("%s\n", word); }配列+添字と, ポインタとはほとんど機械的に書き直すことが見てとれると思う.