演習4-1 K&R プログラミング言語C
2010年01月06日
演習4-1
行の最後尾、探索文字の後ろから探していく。
#include <stdio.h> #include <string.h> #define MAXLINE 1024 int getline(char line[], int max); int strrindex(char source[], char searchfor[]); char pattern[] = "hello"; int main(int argc, char *argv[]) { char line[MAXLINE]; int i; int pos = 0; int found = 0; while (getline(line, MAXLINE) > 0) { if ((pos = strrindex(line, pattern)) >= 0) { printf(" "); for (i = 0; i < pos+1; i++) { printf("%d", i % 10); } printf("\n"); printf("%3d : %s", pos, line); found++; } } return found; } /* getline : s に行を入れ、長さを返す */ int getline(char s[], int lim) { int c, i; i = 0; while (--lim > 0 && (c = getchar()) != EOF && c != '\n') { s[i++] = c; } if (c == '\n') { s[i++] = c; } s[i] = '\0'; return i; } int strrindex(char s[], char t[]) { int i, j, s_pos, t_pos; s_pos = strlen(s) - 1; t_pos = strlen(t) - 1; for (; s_pos >= 0; s_pos--) { for (i = s_pos, j = t_pos; j >= 0 && s[i] == t[j]; i--,j--) { } if (j == -1) { return i + 1; } } return -1; }
実行結果
$ ./ex4-1 <sample2.txt 012345678901234 14 : hello, hello, hello, world. 01234567 7 : hello, hello, llo, world. 0 0 : hello, he, llo, world.
プログラミング言語C 第2版 ANSI規格準拠
posted with amazlet at 09.11.27
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
共立出版
売り上げランキング: 9726