セグメンテーションエラーの原因がわからず困っています。
こんにちは。
セグメンテーションエラーが出て困っています。下のプログラムは、strstrによるテキストファイルからの文字列の検索と抽出を目的としたものです。具体的には文字列「00:18:52.491692」を含んだ行を見つけたいと考えています。
何かお気づきの点等ありましたら是非ご教授頂きたく思います。
#include<stdio.h>
#include<string.h>
int main(){
FILE *fp;
if( (fp = fopen("file.txt","r")) == NULL){
printf("fopen:error\n");
exit(-1);
}
char *answer;
char target[1024] = "00:18:52.491692";
char source[1024];
while( (fgets(source,1024,fp)) != NULL){
answer = strstr(source,target);
if(answer != NULL){
printf("%s\n",answer);
break;
}
}
fclose(fp);
return 0;
}
以下がファイルの中身です。
00:18:52.486843 IP (tos 0x10, ttl 64, id 56604, offset 0, flags [DF], proto: TCP (6), length: 100) 10.1.4.12.ssh > 10.1.4.99.49964: P 1724257568:1724257616(48) ack 648002683 win 718 <nop,nop,timestamp 2123242756 28297809>
00:18:52.491692 IP (tos 0x10, ttl 64, id 56605, offset 0, flags [DF], proto: TCP (6), length: 164) 10.1.4.12.ssh > 10.1.4.99.49964: P 48:160(112) ack 1 win 718 <nop,nop,timestamp 2123242756 28297809>
00:18:52.486957 IP (tos 0x10, ttl 64, id 31393, offset 0, flags [DF], proto: TCP (6), length: 52) 10.1.4.99.49964 > 10.1.4.12.ssh: ., cksum 0xce39 (correct), 1:1(0) ack 48 win 501 <nop,nop,timestamp 28297832 2123242756>
00:18:52.486985 IP (tos 0x10, ttl 64, id 31394, offset 0, flags [DF], proto: TCP (6), length: 52) 10.1.4.99.49964 > 10.1.4.12.ssh: ., cksum 0xcdc9 (correct), 1:1(0) ack 160 win 501 <nop,nop,timestamp 28297832 2123242756>
00:18:52.487816 IP (tos 0x0, ttl 64, id 7429, offset 0, flags [DF], proto: UDP (17), length: 68) 10.1.4.12.32986 > 10.1.4.1.domain: [bad udp cksum 7869!] 63212+ PTR? 99.4.1.10.in-addr.arpa. (40)
どんな些細な意見でもいいので、皆さんのお力を貸して頂けないでしょうか。どうぞよろしくお願いします。
お礼
遅くなって申し訳ありません。解答ありがとうございました。 2点目に関してですが、知り合いのサーバからポートスキャンした場合も、fromとtoが逆に載ってしまうのです。もう少し自分で調べてみます。