--- title: 『プログラミング言語C 第2版 ANSI規格準拠』の勉強 author: kazu634 date: 2009-05-30 url: /2009/05/30/_1255/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4623;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - C ---
ようやく関数の項目まで入ってきました。とりあえず打ち込んだサンプルだけ、貼り付けておきますね。
今回は簡単な grep の実装だそうです:
#include <stdio.h> #define MAXLINE 1000 /* prototype declarations: */ int getline(char line[], int max); int strindex(char source[], char searchfor[]); /* Declaration */ char pattern[] = "ould"; /* program begins here: */ int main(int argc, char *argv[]) { char line[MAXLINE]; int found = ; while (getline(line, MAXLINE) > ){ if (strindex(line, pattern) >= ){ printf("%s", line); found++; } } printf("%d", found); return ; } /* getline: sに行を入れて、長さを返す*/ int getline(char s[], int lim) { int c, i; i = ; while (--lim > && (c = getchar()) != EOF && c != '\n') { s[i++] = c; } if (c == '\n'){ s[i++] = c; } s[i] = '\0'; return i; } /* strindex: sにおけるtのインデックスを返す。どこにもなければ-1を返す */ int strindex(char s[], char t[]) { int i, j, k; for (i = ; s[i] != '\0'; i++) { for (j = i, k = ; t[k] != '\0' && s[j] == t[k]; j++, k++) ; if (k > && t[k] == '\0') { return i; } } return -1; }