• 締切済み

ファイル内検索

初心者ですみません。リム-バルディスクに入っているデータの中から条件にあったデータを抽出するにはどのようにすればいいでしょうか? 本の通りにプログラムを作ってみたんですが、ファイル指定の際にファイルオープンエラーになってしまいます。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>とはどういうことでしょうか?どこかまた別に入力する場所があるのでしょうか? 開発環境で入力した値を確認するとか printfで出力してみるとかそういうことです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>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ですね。

nao-nao-nao
質問者

補足

name[loop]や、inputをうまく入力ができているか確認するといいと思います。 とはどういうことでしょうか?どこかまた別に入力する場所があるのでしょうか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>printf("ファイルが開けません\n"); の部分のメッセージが実行すると表示される ということでいいですか? >if ((FP = fopen("filename", "r")) == NULL) では、オープンするファイルは"filename"になっていますが、 実際は"D:\mo\file.doc"とかなっているのでしょうか もしそうなら "D:\\mo\\file.doc" のようにするといいかもしれません。

nao-nao-nao
質問者

補足

すみません間違えました。 ワードの方の保存は、address.txtになっているので、filenameの部分はaddress.txtを入れました。 そうすると、「電話番号を検索したい名前を入力してください」と出るので入力するとPress any key to exit の文字が出てきて検索はしてくれません。 本当に初心者ですみません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

どんなプログラムを書いたのか、補足で挙げていただくと、回答もつきやすいと思います。

nao-nao-nao
質問者

補足

例えばワードにアドレス帳があり、その中から指定した人を抽出するにはどうしたらいいでしょう? プログラムは、 #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); } としてコンパイルすると、ファイル名を実行してくださいとなるんですが、ファイル名を入れるとエラーになります。。。

関連するQ&A