• ベストアンサー

テキストファイルを読み込んでソートするプログラム

英文のテキストファイルを読み込んで、単語を一行に一単語ずつ並べた後、それをアルファベット順にソートして、同じ単語を消去したテキストファイルを作るプログラミングを作りたいと思っています。 しかしテキストファイルを読み込むという命令がよくわかりません。 isalpha()などを使ってプログラム内に打ち込んだ英文を単語ごとに分けるプログラムは出来たのですが、テキストファイル(.txt)はどうやって読み込めばいいんでしょうか? プログラムはGNOMEのXEmacsで作っていて、C言語です。

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

  • ベストアンサー
  • ponpoc
  • ベストアンサー率100% (1/1)
回答No.2

http://www9.plala.or.jp/sgwr-t/c/sec17.html http://ctips.web.fc2.com/tips/file.html 辺りを見つつ、載っているサンプルを実際に動かしてみて、 どんな動作をするのかを体感するといいかも。見ているだけではなかなか身についていかないので。 それでも分からないようなら初心者向けのC言語の本を買うことをおすすめします。

kanbyo
質問者

お礼

ありがとうございます。 少しこのサイトで勉強してみます。

その他の回答 (1)

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

>しかしテキストファイルを読み込むという命令がよくわかりません。 fopen()/fclose() fread()/fgetc()/fgtes() 等を調べること。

kanbyo
質問者

補足

調べてみましたが、どのサイトも知らない単語ばかりでよく理解できません。 よく分かる解説、もしくはサイトを教えてもらえないでしょうか?

関連するQ&A

  • ソートのプログラム

    100個の整数をファイル「int.txt」から出力して小さい順にソートして「out.txt」に書き込むC言語のプログラムなんですけど、自分で何回やってもできないのでどうか教えてください。

  • サイズの大きなテキストファイルのSORT

    3GB超のテキストファイルをSORTコマンドでソートしたいのですが、空(0KB)の出力ファイルが出来て処理が終わってしまいます。 数KB~数MBのテキストでは正常にソートされるのですが、GB単位になると上記の現象が発生します。 環境はWindowsNTServer4.0です。 ソートできるファイルサイズの上限、ディスクの空き容量等、制限があるのでしょうか? また、上記の現象を回避し、正常にソートする方法をご存知な方がいらっしゃいましたら、どうぞご教授ください。 宜しくお願い致します。 ↓ソートコマンドは至ってシンプルです。 sort /+1 < TEST.dat > OUT.txt

  • テキストファイルにおいて任意の単語を含む一行を削除させたい

    テキストファイルの任意の単語を含む一行を削除させるプログラムを作成したいです。 例えば、 test.txt 今日は久しぶりに晴れました。 とてもいい天気だったので、ショッピングに。 その後、アップルストアにて新発売のMacを触ってきました。 上記のようなテキストファイル(test.txt)に対して、 データベース等に格納されている単語のリストと参照させ、 リストにある単語を含んでいる行を削除させたテキストファイルを生成させたいです。 例えば、リストに"天気"の単語があれば、 以下のようなテキストファイルを生成させたいです。 result.txt 今日は久しぶりに晴れました。 その後、アップルストアにて新発売のMacを触ってきました。 このようにするには、どのようにプログラムを作成すればよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • この内容のプログラミング教えてください、言語はexeファイルを作れるもので

     英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングのソースコード教えてください。  英文のテキストファイルを指定すると、その英文のテキストファイルを開き、ファイルの最初から英単語を探し始め最初の英単語を認識すれば、その英単語を消し、NEWテキストに書き込み(NEWテキストにすでに書き込まれてる単語でなければ)、改行を一回する。そしてまた英文のテキストファイルの最初から英単語を探し始め、見つかると消去し、NEWテキストの全単語と重複がなければ、書き込み一回改行。これを英文のテキストファイルが空白になるまで続け、英文のテキストファイルは閉じ、NEWテキストも保存し閉じる。  実際の内容の結果は次のようになる。 --------------------------------------------------------------------------------------------------- 英文.txt I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers? ---------------------------------------------------------------------------------------------------- new英文.txt I was wondering if my plant needs friends, do need to get more of the same so it can polinated and produce peppers? ------------------------------------------------------------------------------------------------------- ポイント 1 ひとつの英単語の認識は      英単語の始まりの認識条件 →  文字の前に改行か全角、半角スペースがある      英単語の終わりの認識条件 →  文字の後ろが全角、半角スペースか改行がある    で行いその後その単語を消去し、NEWテキストの重複チェックに移る。 2.NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう)    例)Apple と apple    では違うものとしNEWテキストに書き込みされる。    また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。    例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 3. Windowsで動作するexeファイル形式で、GUIであること。プログラムを実行した時の見た目は、英文のテキストファイルの名  前を表示するテキストフィールド?とその横に参照ボタンと、開始ボタンと、プログラムの終了ボタンがあるだけのシンプ  ルなものでいい。開始ボタンを押したときにNEWテキストは新規作成される。   NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけた  ものでいい。    例)英文.txt → new英文.txt 以上のポイントを踏まえてどうプログラムすればいいか教えてください。専門書をもってないのでできれば全ソースコードを載 せてほしいです。お願いします。

  • テキストファイルを分割するプログラム

    テキストファイル中の冒頭4文字をファイル名にしてファイルを分割するプログラムを作りたいのですが、よくわかりません。 たとえば、テキストファイルのデータが aaaABC bbbDEF のとき、 ファイル名がaaa.txtで、データがABC のファイルと ファイル名がbbb.txtで、データがDEF のファイルが作成されるようにしたいのです。どのようにすればいいのでしょうか?

  • テキストファイルについてのプログラム

    初めまして、VC++2005を使っているプログラム初心者です。 windowsフォームアプリケーションというテンプレートを使ってプログラムを作成したいと考えているのですが、どのようにすればよいのかわからず質問しました。ご指導していただけると嬉しいです。 まず、test.txtというテキストファイルの中に以下の内容があります。 8:00  朝食 12:00 昼食 15:00 おやつ 19:00 夕食 というデータです。 このデータをボタンをクリックするとテキストファイルを1行ずつ読んで行き、15:00という文字が出たらテキストボックスに「おやつの時間」というものを表示する方法とまたそのテキストファイルの内容全体を別のテキストボックスに表示したいのですが、どのようにすればよいのでしょうか? fscanfやfopenなどを使うのですが、どうしてもうまくいかないのでよろしくお願いします。

  • こんなプログラムVisual C++ 2005 で作れます?

    コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングです。 実際の内容の結果は次のようになる。 -------------------英文.txt------------------------------- I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers? ------------------new英文.txt(プログラムによって新規作成)------------------------------ I was wondering if my plant needs friends, do need to get more of the same so it can polinated and produce peppers? ------------------------------------------------- ポイント (1) NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう)    例)Apple と apple では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。    例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。    例)英文.txt → new英文.txt

  • 二つのファイルを読み込み、一つのファイルへ出力を行うプログラム

    初めて質問させていただきます。 専門学校にて以下のようなPerlの課題に取り組んでおります。初学者です。 ---------- 二つのファイルを読み込み、一つのファイルに出力を行う。但し、以下の条件で出力を行うこと。 (1)ファイルはすでにソートされているものとし、プログラム内でソートを行う必要はない。 (2)同じデータは一つしか出力しない。 ---------- 課題の意図としては、二つのファイルから一行ずつデータを読み込み、文字列比較をさせたのち、既出のもの(重複)は出力させない~みたいなことを求められています。 ---------- ■データ例 「A.txt(元データファイル)」 A00001 A00002 「B.txt(元データファイル)」 A00000 A00002 A00005 「C.txt(結果出力ファイル)」 A00000 A00001 A00005 ---------- まず、行き詰っているのは二つの元データファイルからデータを一行ずつ読み込み、比較する部分です。 関数で読み込ませ、if文で文字列比較するのはなんとなく分かるのですが、どう表現させてよいのかが、いまひとつ分かりません。 回答はじめ、ヒントとなる基本的な考え方を教えていただけると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • テキストファイルの一列目から順にクリップボードにコピー

    初歩的な質問でしたらすいません。 現在スクリプトの勉強をしているのですが、 あらかじめテキストファイル(.txt)に単語を一行ずつ入力しておき、 そのファイルの一行目から順にクリップボードに単語をコピーしていくスクリプトを作りたいと思っています。 どなたか作り方もしくはヒントを下さい。

  • テキストファイルの一行目から順に自動でクリップボードにコピー

    初歩的な質問でしたらすいません。 現在JavaScriptの勉強をしているのですが、 あらかじめテキストファイル(.txt)に単語を一行ずつ入力しておき、 そのファイルの一行目から順にクリップボードに単語をコピーしていくスクリプトを作りたいと思っています。 どなたか作り方もしくはヒントを下さい。

専門家に質問してみよう