演習1-19 K&R プログラミング言語C
2009年12月05日
演習1-19
行に含まれる改行文字を逆転しないように処理する。
#include <stdio.h> #define MAXLINE 1024 /* 入力行の最大長 */ int mygetline(char line[], int maxline); void reverse(int len, char str[]); int main(int argc, char *argv[]) { int len; char line[MAXLINE]; while ((len = mygetline(line, MAXLINE)) > 0) { if (line[len-1] == '\n') { --len; } reverse(len, line); printf("%d:%s", len, line); } return 0; } /* mygetline : s に行を入れ、長さを返す */ int mygetline(char s[], int lim) { int c, i; for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) { s[i] = c; } if (c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return i; } /* 文字列 str を逆に並べる */ void reverse(int len, char str[]) { int i = 0; char tmp; len = len - 1; while (i < len) { tmp = str[i]; str[i] = str[len]; str[len] = tmp; ++i; --len; } }
プログラミング言語C 第2版 ANSI規格準拠
posted with amazlet at 09.11.27
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
共立出版
売り上げランキング: 9726