• ベストアンサー

VC++でのファイルの読みこませ方

タイトルではわかりにくいと思うのですが、実際はプログラム中である指定した形式で保存されたtxtファイルなどを開いて、その中にある文字列を配列に入れて, そのままの文字列をランダムに表示させたいのですが、なかなかいい方法が浮かびません。配列へ読みこませる関数ってあるんでしょうか?ファイルを開いてから詳しく教えていただけたら嬉しいです。 後、勉強のためにやってるので難しいというか高度なやり方があれば是非教えてください。おねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

表示の仕方が質問に書かれていませんが、 簡単なフローとしては、 1.ファイルからCFileを使いローカルなCString型変数に文字列を読み込む。 2.ローカル変数からダイアログ上の表示領域に移し表示する。  ⇒面罵変数を作成してもいいですし、  SetWindowText関数を使ったっていいですし。 でしょうか。

その他の回答 (2)

回答No.2

MFCを避ける場合(WinだけどアンチMSの人とか)は、 fgets関数かfread関数でしょう。 どちらもstdio.hで宣言されていて、 char* fgets(char *buf, int maxchar, FILE *fp); ファイルfpから、maxchar文字分(厳密には\0があるので-1ですが)、 または改行までをbufに読み込みます。 戻り値は、正常時:bufへのポインタ。異常時・ファイル終了時:NULL。 size_t fread(void *buf, size_t size, size_t n, FILE *fp); ファイルfpから、sizeバイトをn個分bufに読み込みます。 戻り値は、読み込んだデータの数。 MFCはリクツがわかった上で使うべきだと思ってるもんで…

channel6
質問者

お礼

高度な説明ありがとうございました。自分もできるだけ理屈から入りたい方なので 基本からやるべきだったのですが、学校の授業でMFCから入ってしまい、課題、卒研とMFCでやることになってしまって進めば進むほど意味がわからなくなって困っていたので、これが終わりしだい、しっかり理屈から入る本を買ってやっていきたいと 思います。ありがとうございました。

回答No.1

VC++であればMFCを使う方がいいでしょう。 勉強の為ファイルの読書きは「CFile」文字列の操作は「CString」 をMSDNのヘルプで検索して独学してみて下さい。 ⇒結構簡単に組めると思います。 フローとしては、 1.ファイルを開き1行ずつ読込み配列に読み込んでいく。 2.ランダムに配列番号を算出し表示する。 ですね。

channel6
質問者

お礼

遅くなりましたがありがとうございました。読みこませではCFile、文字列では CStringを使って作成を進めていたのですが、 ダイアログエディットから取得したものをCString型の変数に読みこませたのですが、表示でうまくいきません。やはりCString型はメンバ変数の設定として使った方がいいのでしょうか?変数でやっている今はやりかたがおかしいだけなのでしょうか?

関連するQ&A

  • ランダムに文字を表示したい

    ランダムにテキストやリンクを表示するプログラムを書きたいのですが、何かいいサイトかいい方法はないでしょうか? ランダムに表示する文字列は違うTXTファイルなどに保存して別で管理する方法にしたいのですが。 CGI初心者なのですがよろしくおねがいします。

    • ベストアンサー
    • CGI
  • 文字列ファイル表示プログラム

    Cプログラムの問題なのですが、 「複数の文字からなるファイルを読み込み、全て読み込んだ後に表示するプログラムを作成したいと思います。あらかじめ文字列を配列として宣言するのではなく、文字列の長さを確認した上で、malloc()標準関数でメモリを割り当て、表示しなさい」 文字列を宣言せずに、どうやったらファイルの中の文字列を読み込むことができるのでしょうか?その上、文字列の長さを確認したあとmalloc関数を使うにはどうすればいいのでしょうか。 どなたか教えてください。お願い致します。

  • UNIX:縦一列のファイルを横一行として表示したい

    お世話になります。 A.TXTのような縦一列にデータが入っているテキストファイルがあります。 それを横一行の形式で表示させたいのですが、可能でしょうか? 実現する方向性のヒントでも頂けたらと思います。 ■望む結果 文字列1文字列6文字列5文字列2文字列4文字列3 ------------------------------------------ catコマンドでファイルを見ると、A.TXTの内容のままになります (まぁ、当たり前ですが・・・)。 ■A.TXT 文字列1 文字列6 文字列5 文字列2 文字列4 文字列3 ※文字列の並びはランダム

  • VC++2005 ファイル読み込み

    現在VC++2005でプログラムをしています。 そこで質問があるのでよろしくお願いします。 PCに保存してあるテキストファイルをプログラムで読み込み、その中のテキストからいろいろな判断をするというようなプログラムを作りたいと考えています。 そこでファイルのオープンなでは理解できたのですが、ファイルの中のテキストを読み判断するという方法がよくわからず質問しました。 また、テキストファイルの中身は数字と文字列になっています。 下にその例を書きます。 7,000 ディスプレイ 5,000 ゲーム などです。 そこで6,000以上なら高いというような判断を行いラベルに表示するというような形です。 説明が下手かもしれませんがよろしくお願いします。

  • インデックス(index)関数を用いて

    ある数値配列をもったファイルがあります。(100個ほど数値があるとしてください)その中から、自分でプログラムを作る際に指定した連続した配列(7、8個程度だと考えてくだされば結構です)を探し、それが見つかった場所から配列の最後までを表示するプログラムを作りたいんですが、どのようにしたらいいんでしょうか? インデックスindexだけでは、指定した文字が存在するかしないかの判断はできると思われるんですが。 実行する際には、以下のようにするつもりです。 プログラムファイル名.pl データファイル(数値配列)名.txt 検索する数値列(ここでは簡単に表示するために1234567)としておきます。 わかりにくくてすいませんが、回答よろしくお願いします。

  • 同じ名前のファイルを作った場合に上書きしてしまうのですが、どうすれば上書きしないで保存できるのでしょうか?

    ランダム関数で数字を表示し、それをファイルに保存し、そのファイルの名を好きな文字で決めるというプログラムを作ったのですが、 一回目にランダム関数で数字を保存して、Aという名前のファイルに入れた後、二回目に同じ作業をして同じファイル名にしたら上書きされて、一回目とは違うランダムな数字が表示されてしまいました。 もうこの名前のファイルは存在します、という意味の部分を入れなければならないと思うのですが、どういった肯定を取り入れればファイルが存在していることがわかるのでしょうか?

  • 別ファイルに保存した文字列の並び替え

    タイトル通りなんですが、別ファイルに保存した文字列を並べ替えることは可能でしょうか? 仮に保存している文字列が商品名だとして、それをテーブル表示するのですが、それを管理ページのようなもので並び替えできるようにしたいのです。 そして並びかえてから再度別ファイルに保存しなおす(書き込みなおす)ようにしたいのですが・・・ fopenで開いて、文字列を配列として受け取りテーブル表示。 管理ページから配列を並び替えできるようにし、並び替えてfwriteで書き込み。 といった流れかなとは考えているのですが・・・どうでしょうか? アドバイスよろしくお願いします。

    • 締切済み
    • PHP
  • バッチファイルについての質問です

    バッチファイルの質問です。宜しくお願いします。 バッチファイルでテキストファイルの中から指定した文字列が入っている行をとり、指定した文字列を除いた文字列が欲しいのですが、どのようなコマンドを使用すればできるでしょうか? ----------------------- AAAランダム文字列1 BBBランダム文字列2 CCCランダム文字列3 DDDランダム文字列4 EEEランダム文字列5 ----------------------- 上記のようにテキストファイルに書かれていたとして、”ランダム文字列3”という文字だけを取得したいのです。 つたない説明文で申し訳ございませんが宜しくお願いします。

  • VC++2008でAPI関数とプログラムの連動

    現在“fopenでtxtファイルを開き内容を参照して特定の文字列があればメッセージボックスを表示する”というプログラムを作ろうとしているのですが、 API関数でメッセージボックスを表示させる.cppファイルを「Win32プロジェクト」でつくり、 それとは別にfopenでtxtファイルを開く.cppファイルを「Win32 コンソールアプリケーション」で作ったのですが、 この二つのプログラムを連動させて動かすことは可能なのでしょうか? それぞれ別のプロジェクトで作ったのはそうしないと _WinMain@16 が関数 ___tmainCRTStartup で参照されました。 というエラーが発生してしまうためです。 API関数を使う方では最初にWinMainを定義?し、fopenを使用している方ではint main()を定義しているのですが、そこでエラーが起きてしまっているようなのですが…

  • javaでemlファイルからtxtファイルへの変換の仕方

    複数のemlファイルからtxtファイルへの一括変換の仕方がわかりません。 フリーソフトを使ってやったらtxtファイルになったとき文字化けしてしまい使えませんでした。 一つずつやるならemlファイルを名前をつけて保存で保存形式をtxtにすれば出来るんですが・・ それでjavaを使ってemlファイルからtxtファイルに変換するプログラムを作りたいんですが、本を読んでも見つかりませんでした。 renameToを使ってemlをtxtに変えても文字化けしてしまいました。 どのようなコマンドを使えば出来ますか??

    • ベストアンサー
    • Java

専門家に質問してみよう