- 締切済み
ファイル内検索
初心者ですみません。リム-バルディスクに入っているデータの中から条件にあったデータを抽出するにはどのようにすればいいでしょうか? 本の通りにプログラムを作ってみたんですが、ファイル指定の際にファイルオープンエラーになってしまいます。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>とはどういうことでしょうか?どこかまた別に入力する場所があるのでしょうか? 開発環境で入力した値を確認するとか printfで出力してみるとかそういうことです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>Press any key to exit の文字が出てきて検索はしてくれません。 "Press any key to exit" 自体は、多分、開発環境から実行して、プログラムが正常に終了したので、何か押してくれということですね。 検索自体は、されているのだと思いますが、 何も表示されないということは、 >if (strcmp(name[loop], input) == 0) でうまく一致しないということだと思います。 name[loop]や、inputをうまく入力ができているか確認するといいと思います。 あと、 >printf("%sさんの電話番号は: &s\n", input, phone[loop]); の&sは、%sですね。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>printf("ファイルが開けません\n"); の部分のメッセージが実行すると表示される ということでいいですか? >if ((FP = fopen("filename", "r")) == NULL) では、オープンするファイルは"filename"になっていますが、 実際は"D:\mo\file.doc"とかなっているのでしょうか もしそうなら "D:\\mo\\file.doc" のようにするといいかもしれません。
補足
すみません間違えました。 ワードの方の保存は、address.txtになっているので、filenameの部分はaddress.txtを入れました。 そうすると、「電話番号を検索したい名前を入力してください」と出るので入力するとPress any key to exit の文字が出てきて検索はしてくれません。 本当に初心者ですみません。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
どんなプログラムを書いたのか、補足で挙げていただくと、回答もつきやすいと思います。
補足
例えばワードにアドレス帳があり、その中から指定した人を抽出するにはどうしたらいいでしょう? プログラムは、 #include <stdio.h> #include <string.h> int main() { char name[10][22]; char phone[10][13]; char input[21]; int loop; FILE *FP; /* ファイルのオープン */ if ((FP = fopen("filename", "r")) == NULL) { printf("ファイルが開けません\n"); return(1); } /* ファイルからデータを読み込む */ for (loop = 0; loop < 10; loop++) { /* 名前の読み込み */ fgets(name[loop], 22, FP); /* 読み込んだ文字の最後にあるかいい業を消す */ name[loop][strlen(name[loop])-1] = '\0'; /* 電話番号の読み込み */ fgets(phone[loop], 13, FP); /* 読み込んだ文字の最後にある改行を消す */ phone [loop][strlen(phone[loop])-1] = '\0'; } /* 電話番号を検索したい名前の入力 */ printf("電話番号を検索したい名前を入力してください\n"); gets(input); /* 検索と表示 */ for (loop = 0; loop <10; loop++) { if (strcmp(name[loop], input) == 0) { /* 電話番号表示 */ printf("%sさんの電話番号は: &s\n", input, phone[loop]); } } return(0); } としてコンパイルすると、ファイル名を実行してくださいとなるんですが、ファイル名を入れるとエラーになります。。。
補足
name[loop]や、inputをうまく入力ができているか確認するといいと思います。 とはどういうことでしょうか?どこかまた別に入力する場所があるのでしょうか?