行 文字列
1: aaaa printf("aaaaa");
30: printf("aaaaa");
46: printf("abcd");
のようにコマンドラインで指定した文字を検索するようなプログラムを考えました。
しかし、何も出ませんでした。
指摘お願いします。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define str 300
int match_str(char *a, char *b);
int main(int argc,char *argv[])
{
FILE *fp;
char a[str] = {'\0'};
int cnt,num;
if(argc != 2)
{
return 1;
}
fp = fopen(argv[1],"r");
if(fp == NULL)
{
printf("ファイル %s が見つかりません\n",argv[1]);
return 1;
}
while(fgets(a,str,fp)!= NULL)
{
cnt++;
printf("%d\t:",cnt);
num = match_str(a,argv[2]);
if(num == 1)
{
printf("%s",a);
}
}
fclose(fp);
printf("\n");
}
int match_str(char *a, char *b)
{
int i = 0;
int j = 0;
int maxa,maxb;
int flg = 0;
while(flg == 0)
{
if(a[i] == '\0')
{
maxa = i;
flg == 1;
}
i++;
}
i = 0;
while(flg == 0)
{
if(b[i] == '\0')
{
maxb = 0;
flg = 1;
}
i++;
}
for(i=0;i<maxa;i++)
{
if(0==strncmp(&a[i],&b[j],1))
{
if(maxb-1 == j)
{
return 1;
}
else
{
j++;
}
}
}
return 0;
}