このプログラムでは、リダイレクトされたファイル (filetoreadfrom.data) から部分文字列 (コマンド ライン引数で指定) を含む文字列を検索する必要があります。ファイルには、単語 (文字列) のリストが含まれています。文字列に部分文字列が含まれている場合は、文字列を出力します。コマンドラインは次のとおりです。
./program サブストリング < filetoreadfrom.data
「Segmentation-fault (Core dumped )」というエラー メッセージが何度も表示されますが、その理由がわかりません。最初は、char 配列を malloc していないことが原因だと思っていましたが、#define MAXchar 200を使用して char 配列のサイズを修正することでそれを取り除くことができたので、何が問題だったのか本当にわかりません。メモリ スペース、fgets または strstr の使用法、またはファイルのリダイレクト方法に問題があるためですか。
これらは私のコードです:
char line[MAXchar]; //MAXchar = 200
int count=0;
//check usage
if ((strcmp("<", argv[2]))!=0){
fprintf(stderr,"Usage: ./program substring\n");
return 1;
}
//read lines from redirected file
while (fgets(line,MAXchar,stdin)!=NULL){
//find substring in each line
//if substring is present in the line
if (strstr(line,argv[1])!=NULL){
//print the line
fprintf(stdout, "%s\n", line);
count=1;
}
}
//if none of the line contains the substring
if (count==0){
fprintf(stdout, "No match found\n");
}
return 0;
}
皆さんがこれでいくらか光を当てることができることを願っています. ありがとう!