|
> コマンドラインでファイルにある文字を検索して、
> その文字がどの何行目何文字目にあるか表示したいと思っています。
本当に「文字」の検索ですか。
#include <stdio.h>
int main(int argc, char *argv[])
{
int c, ch, line, col;
if (argc != 2) {
fprintf(stderr, "usage: %s chacter <file\n", argv[0]);
return 1;
}
ch = argv[1][0];
for (line = col = 1; (c = getchar()) != EOF; col++) {
if (c == ch)
printf("line = %d, col = %d\n", line, col);
if (c == '\n') {
line++; col = 0;
}
}
return 0;
}
----------------------------------------------------------------------
strstr を意識するのなら、本当は「文字列」の検索ではありませんか。
int main(int argc, char *argv[])
{
int line, col, i;
char buf[1024], *str;
if (argc != 2) {
fprintf(stderr, "usage: %s string <file\n", argv[0]);
return 1;
}
str = argv[1];
for (line = 1; fgets(buf, sizeof buf, stdin); line++) {
for (col = 0; buf[col]; col++) {
for (i = 0; str[i]; i++)
if (buf[col+i] != str[i])
break;
if (str[i] == '\0')
printf("line = %d, col = %d\n", line, col+1);
}
}
return 0;
}
コメントは自分で考えて付けてください。
|