|
> ファイルの形式が少し変わってしまい、以下の様になりました。
ひとつのデータは、
(1) "---- [" から、次の "---- [" の直前まで、または、
(2) "---- [" から、次の "." の直前まで、または、
(3) "---- [" から、EOF まで、
ということでしょうか。仕様をはっきり示してくださいね。
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char buf[1024], date[15]; int len, found;
if (argc != 2)
return printf("usage: %s yyyy[mm[dd[hh[mm[ss]]]]] <file\n", *argv), 1;
len = strlen(argv[1]);
fgets(buf, sizeof buf, stdin);
while (!feof(stdin)) {
found = sscanf(buf, "---- [%*[^[][%4s%*2c%2s%*2c%2s%*2c%2s%*2c%2s%*2c%2s",
date, date+4, date+6, date+8, date+10, date+12) == 6
&& strncmp(date, argv[1], len) == 0;
do {
if (found) fputs(buf, stdout);
if (fgets(buf, sizeof buf, stdin) == NULL) break;
if (buf[0] == '.') { fgets(buf, sizeof buf, stdin); break; }
} while (strncmp(buf, "---- [", 6));
if (found) fputs("\n", stdout);
}
return 0;
}
|