前提・実現したいこと
strstrを使わずに、C言語でファイル内で文字列を検索し、その文字列がある行を出力するプログラムを書きたいのですが、うまく行かず何も出力されません。どこがおかしな挙動をしていてそうなるのかがわからないのでお教え願いたいです。
発生している問題・エラーメッセージ
エラーは出ませんが何も出力されません。
該当のソースコード
C
1#include<stdio.h> 2#include<string.h> 3#include<stdlib.h> 4int searchstr(size_t length,char *s,char *a,char *c){ 5 int n=0,p; 6 7 a=strchr(s,c[0]); 8 while(n<strlen(s)-length){ 9 if(a+n==NULL){ 10 p=0; 11 break; 12 } 13 if((strncmp(a+n,c,length))==0){ 14 p=1; 15 break; 16 } 17 else{ 18 n++; 19 continue; 20 } 21 } 22 return p; 23} 24 25 26int main(int argc,char *argv[]){ 27 int i; 28 char *a; 29 FILE *fp; 30 char s[1000]; 31 size_t length; 32 length=strlen(argv[2])+1; 33 34 fp=fopen(argv[1],"r"); 35 a=malloc(length); 36 37 while((fgets(s,100,fp))!=NULL){ 38 i=searchstr(length,s,a,argv[2]); 39 if(i==1) printf("%s",s); 40 } 41 42 free(a); 43 fclose(fp); 44 45 return 0; 46}
補足情報(FW/ツールのバージョンなど)
Macでemacsを利用して書きました。
回答2件
あなたの回答
tips
プレビュー