ショッピングモール  レギュラー(エスプレッソ用)  レギュラー(フレーバーコーヒー)


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5206

テキストファイルの文字列を数値に変換して配列に入れたい
投稿者---hidemi(2005/12/31 13:23:13)


自分でWebや本を調べながらやっているのですが解決できないので、皆さんのお力をお貸しください。よろしくお願いします。

テキストファイルのタブ区切りの文字列を読み込んで、数値に変換し、配列に入れるソースを作成したいと思っています。

とりあえず、テキストファイル全体を一文字ずつ読み込んで、表示させるところまでは、下記のプログラムでうまくいきました。

しかし、文字列を「タブ区切り」のところで「ひとまとまり」として読み込んで、それを確認のため表示させ、数値に変換して配列にいれ、それをファイルの最後まで繰り返す、というように改良したいのですが、うまくできません。

'\t'でタブ区切りの箇所を判定させ、EOFまで読み込むのを繰り返せば、うまくいくのでしょうか?

サンプルコードをご例示いただけると、幸いです。よろしくお願いします。

#環境は、OSがWindowsXP、コンパイラはBorladのC/C++フリーコンパイラです。

/*                       */
/*  独習C                 */
/*                       */
/*  test.datを読み込む     */
/*                         */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{

    FILE *fp;

    int one_character;

    if(argc != 2) {
        printf("ファイル名を指定してください。\n");
        exit(1);
    }

    /*読み込み用にファイルを開く*/
    if((fp = fopen(argv[1], "r")) == NULL){
        printf("ファイルを開くことができません。\n");
        exit(1);
    }

        while( ( one_character = fgetc(fp) ) != EOF ) {

        putchar(one_character); /* 読み込んだ文字を標準出力に出力 */

    }


    fclose(fp);


    return 0;

}




#読み込むテキストファイルは次のとおりです。

0      -40.05      40.00
0      -35.05      35.00
0      -30.55      38.00
1      -42.11      45.00
1      -48.25      36.00
1      -47.75      33.00
1      -60.55      48.15


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:テキストファイルの文字列を数値に変換して配列に入れたい 5208 Blue 2005/12/31 13:36:10


No.5208

Re:テキストファイルの文字列を数値に変換して配列に入れたい
投稿者---Blue(2005/12/31 13:36:10)


(fgetcのところを変更し)
fscanfを上手く使うか、
fgetsで1行分の文字列を取得し、
strtokでタブ区切りに分割し、atof系で数値変換する
・(全て数値ということなので)strtod系を駆使して、数値を取得する
かのやり方がありそうです。


この投稿にコメントする

削除パスワード

No.5209

Re:テキストファイルの文字列を数値に変換して配列に入れたい
投稿者---hidemi(2005/12/31 13:56:40)


アドバイスいただき、大変ありがとうございました。
下記リンク先のページを参考に改良してみたいと思います。
改良の結果がでましたら、ご報告します。
うまくいかなかったときは、またこの掲示板にて、お力をお借りしたいと思います。
よろしくお願いいたします。

>(fgetcのところを変更し)
>fscanfを上手く使うか、
>fgetsで1行分の文字列を取得し、
>・strtokでタブ区切りに分割し、atof系で数値変換する
>・(全て数値ということなので)strtod系を駆使して、数値を取得する
>かのやり方がありそうです。



この投稿にコメントする

削除パスワード

No.5244

Re:テキストファイルの文字列を数値に変換して配列に入れたい
投稿者---ありがとうございました。(2006/01/07 15:15:50)


>改良の結果がでましたら、ご報告します。

時間がかかりました(風邪ひいたり,なんだかんだで)が,ようやく,できました。
アドバイスいただいたとおり,「fgetsで1行分の文字列を取得して,strtokでタブ区切りに分割し、atof系で数値変換する」でうまくいきました。

アドバイスいただいた方,大変ありがとうございました。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity