質問

った一般的なご質問がどのようにアプローチは、特定の問題っています。私はかなり新Cうんです。言いフォルダに1000+テキストファイルのファイルの名前が付けられていないその他の通知に記載されている場番号順、アルファベッ.私の問題にしていまファイルの株式のデータを各ファイルの名前は、その後それぞれ東京証券取引所第一部.したいプログラムを書くりやすく解説するとともに、各ファイルデータを読み込み、過去最低水準まで低下とと比較することで、現在の価格を計算し比、印刷したりする事ができます。検索および計算問題なく対応し、問題のプログラムを通の各ファイルです。に見えるこの攻撃するには、テキストファイルを含むすべてのティッカーシンボルを有するプログラムの読み込みを配列にして走行するループ最初の最初のファイル名の配列を行なわなければならない計算、印刷、出力ファイルのcloseは、そのループバック周辺の移動は、第二の要素に東京証券取引所第一部)の配列になります。このことはかなり簡単にセットアップ(と思う)のようなボタンが表示千名のファイルをテキストファイルです。であり、より良いアプローチす。だうえでコードがある場合を除きエクスペディア機能をcといっ;)には、アドバイスから経験豊富なCきます。

協力:)

編集:これはLinuxの場合、申し訳ありません忘れてしまったのmetion!

役に立ちましたか?

解決

の下のLinux / UNIX(BSD、OS X、POSIXなど)あなたは opendir関数を使用することができますこちら / のreaddir のディレクトリ構造を通過します。ファイルシステムが必要な情報を持っているとき必要が、更新することを静的ファイルを生成する必要はありません。あなたが唯一の特定の時点で株式のサブセットをしたい場合は、使用してグロブする速くなり、また、そこにある SCANDIRするます。

あなたはCコンパイラとしてVisual C ++を使用して開発している場合は、私は、Win32の(Windowsの/プラットフォームSDK)関数が呼び出されているかわかりません。 MSDNライブラリを検索するお手伝いをする必要があります。

他のヒント

あなたは、Linux ...

上で実行していると仮定すると、
ls /path/to/text/files > names.txt

は正確に何をしたいです。

「ディレクトリ」のいずれかの概念を持っている標準Cには機能がありません。これを行うには、プラットフォーム固有の機能のいくつかの種類を使用する必要があります。いくつかの例については、Cprogrammnig.comからで、この記事を見てみましょうのます。

は個人的には、第二の例に示すようにopendir() / readdir()アプローチを使用して好みます。あなたがCygwinを使用している場合は、Windows上でもLinuxでネイティブに動作します。

アプローチ1)いかない特定のディレクトリになりたいとみこれらのファイルを含むコードデータおよびそれ以外なにもありません。私はその利用 C readdir API リスト内のすべてのファイルのディレクトリに対して繰り返し処理を実行各行のデータ処理が開きます。る東京証券取引所第一部にファイルを適用するために、強結合モデルに基づきファイル名を指定します。

メリット:簡単にコード

連結:この変化により契約内容の変更、ファイルを保存しながら進めています。

アプローチの2)変更のファイル形式の東京証券取引所第一部にファイルで始まり、魔法のコードを指定することは、東京証券取引所第一部にファイルを含む文字列の名前です。としてご使用の前にreaddirに対して繰り返し処理を実行するすべてのファイルをフォルダを開き、各ファイルのマジック番号の設定の読み込みおよび東京証券取引所第一部名前のファイルから、プロセスのデータとして前

メリット:より柔軟です。ファイル名を把握しなが反映名東京証券取引所第一部 連結:くコード、ファイル形式が定まらない。

  

が、私は本当に好きなテキストファイルに千通のファイル名をかけて入力しないようにするだろう。これにアプローチするより良い方法は?あります。

私は個人的な用途のためとはいえ、しばらく前に正確に同じ問題aを解決しています)。

私がやったことは、それらのファイルのリストを生成するために、OSのシェルコマンドを使用していたし、テキストファイルに出力をリダイレクトし、それらを介して私のプログラムの実行を持っています。

擬似コードでは、次のようになり、私は100%を確認してください、これは正しいアプローチであれば...

じゃないと、私はコードを定義することはできません
for each directory entry
    scan the filename
         extract the ticker name from the filename
         open the file
              read the data
              create a record consisting of the filename, data.....
         close the file
         add the record to a list/array...
> sort the list/array into alphabetical order based on 
  the ticker name in the filename...

あなたが望むなら、少しそれを変えるディレクトリエントリにファイル名をスキャンし、ソートそれらは、まず、第1のファイル名を持つレコードを構築することにより、そのリスト/配列の先頭に戻って読んで個別に各1を開くことができますデータと、レコードにそれを置く....

希望このことができます、 宜しくお願いします、 トムます。

UNIXの場合は、便利なグロブの機能があります:

glob_t results;
memset(&results, 0, sizeof(results));
glob("*.txt", 0, NULL, &results);
for (i = 0; i < results.gl_pathc; i++)
    printf("%s\n", results.gl_pathv[i]);
globfree(&results);
Linuxまたは関連するシステム上では、FTSライブラリを使用することができます。これは、ファイル階層を横断するために設計されています:男FTS 、

のreaddirする

のような単純なようでも、何か

Windows上の場合、あなたは自分のディレクトリ管理を使用することができますのAPIの。より具体的には、 FindFirstFile の機能は、一緒に使用します FindNextFileする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top