1-19.c
演習 1-19 文字列sを逆に並べる関数reverse(s)を書け。さらに、この関数を使って、入力を一時に1行ずつ逆転するプログラムを書け。
#include <stdio.h> #define MAXLINE 1000 void reverse(char s[]) { int c, len; char temp; for (len = 0; s[len] != '\0'; ++len) ; --len; for (c = 0; c < len; ++c, --len) { temp = s[c]; s[c] = s[len]; s[len] = temp; } } main() { int c; int i = 0; char line[MAXLINE]; while ((c = getchar()) != EOF) { if (c == '\n') { line[i] = '\0'; reverse(line); printf("%s\n", line); i = 0; } else { line[i++] = c; } } return 0; }
$ /a.out < 1-19.c
>h.oidts< edulcni#
0001 ENILXAM enifed#)][s rahc(esrever diov
{
;nel ,c tni
;pmet rahc)nel++ ;'0\' =! ]nel[s ;0 = nel( rof
;
;nel--{ )nel-- ,c++ ;nel < c ;0 = c( rof
;]c[s = pmet
;]nel[s = ]c[s
;pmet = ]nel[s
}
})(niam
{
;c tni
;0 = i tni
;]ENILXAM[enil rahc
{ )FOE =! ))(rahcteg = c(( elihw
{ )'n\' == c( fi
;'0\' = ]i[enil
;)enil(esrever
;)enil ,"n\s%"(ftnirp
;0 = i
{ esle }
;c = ]++i[enil
}
}
;0 nruter
}