C言語によるテキストファイルからデータの読み込みについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ほげお

C言語によるテキストファイルからデータの読み込みについて

#1

投稿記事 by ほげお » 8年前

こんにちは。
C言語初心者で、現在学習中のほげおと申します。

テキストファイルから座標データを読み込み、特定の行のみ出力するプログラムを作製しているのですが、うまくいきません。

テキストデータの例
1.000 2.055 i
2.000 3.050 i
1.500 0.000 n
4.000 3.000 i
(以下略)

というx,y座標のテキストデータがあり、行末にiかnが書いてあります。
このファイルから、行末にiのある行のみを出力したいのですが、うまくいきません。

#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp;
char *filename = "coord.txt";
double f,g;
char h,str;
int ret;

fp = fopen(filename,"r");

if(fp == NULL)
{
printf("Couldn't open\n");
return -1;
}

while(fscanf(fp,"%lf %lf %c\n",&f,&g,&h) != EOF)
{
/*ret = strcmp(h,judge);
if(ret == 0)
{
printf("%lf %lf %c\n",f,g,h);
}
*/
printf("%lf %lf %c\n",f,g,h);
}

fclose(fp);

return 0;
}

このようなプログラムを作製したのですが、実行しても何も出力されません。
どこが間違っていて、どうすれば良いのか教えて頂けると助かります。
よろしくお願いします。

ほげお

Re: C言語によるテキストファイルからデータの読み込みについて

#2

投稿記事 by ほげお » 8年前

すいません、訂正があります。
コメントアウトされている部分がありますが、そこのコメントアウトは間違ってつけてしまったものです。
よろしくお願いします。

box
記事: 2002
登録日時: 13年前

Re: C言語によるテキストファイルからデータの読み込みについて

#3

投稿記事 by box » 8年前

ほげお さんが書きました: コメントアウトされている部分がありますが、そこのコメントアウトは間違ってつけてしまったものです。
で、結局、うまくいっていない「現在の」コードはどうなっているのですか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

かずま

Re: C言語によるテキストファイルからデータの読み込みについて

#4

投稿記事 by かずま » 8年前

strcmp は文字列の比較です。h は char ですから、== で比較しましょう。

コード:

    while(fscanf(fp,"%lf %lf %c",&f,&g,&h) != EOF)
    {
        if(h == 'i')
        {
            printf("%f %f %c\n",f,g,h);
        }
    }
scanf の書式の '\n' は ' ' と全く同じ意味であり、
scanf の書式の ' ' には特別な意味があります。
それを理解した上で書いていますか?
scanf の書式の "%lf" は double に、"%f" は float に適用しますが、
printf の書式の "%f" は double です。"%lf" でも出力できますが。

ほげお

Re: C言語によるテキストファイルからデータの読み込みについて

#5

投稿記事 by ほげお » 8年前

boxさん

訂正等加えた現在のプログラムはこちらになります。
しかし実行してみても何も出力されず困っております。
心当たりがあればご指摘いただきたいです。


#include<stdio.h>
int main()
{
FILE *fp;
char *filename = "coord.txt";
double f,g;
char h;

fp = fopen(filename,"r");

if(fp == NULL)
{
printf("Couldn't open\n");
return -1;
}

while(fscanf(fp,"%lf %lf %s\n",&f,&g,&h) != EOF)
{
if(h == 'i')
{
printf("%f %f %s\n",f,g,h);
}
}

fclose(fp);

return 0;
}

ほげお

Re: C言語によるテキストファイルからデータの読み込みについて

#6

投稿記事 by ほげお » 8年前

かずまさん

scanfにおける\nなど、理解できていませんでした。
勉強していきたいと思います。
ご指摘ありがとうございました。

プログラムを修正してみたのですが、実行しても何も出力されず困っております。
アドバイス等いただけると助かります。
よろしくお願いします。

box
記事: 2002
登録日時: 13年前

Re: C言語によるテキストファイルからデータの読み込みについて

#7

投稿記事 by box » 8年前

char型の変数を入出力するときの書式文字列が
%s
というのは間違ってるような気がします。
%c
では?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ほげお

Re: C言語によるテキストファイルからデータの読み込みについて

#8

投稿記事 by ほげお » 8年前

boxさん

講義で習った%cと%sの使い方があやふやになっていたようです。
ご指摘ありがとうございました。

ほげお

Re: C言語によるテキストファイルからデータの読み込みについて

#9

投稿記事 by ほげお » 8年前

無事解決できました!
アドバイスしてくださった方々、本当にありがとうございました。
C言語についての知識がまだまだなのでこれからも勉強していきたいと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る