こんにちは。
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;
}
このようなプログラムを作製したのですが、実行しても何も出力されません。
どこが間違っていて、どうすれば良いのか教えて頂けると助かります。
よろしくお願いします。
C言語によるテキストファイルからデータの読み込みについて
Re: C言語によるテキストファイルからデータの読み込みについて
すいません、訂正があります。
コメントアウトされている部分がありますが、そこのコメントアウトは間違ってつけてしまったものです。
よろしくお願いします。
コメントアウトされている部分がありますが、そこのコメントアウトは間違ってつけてしまったものです。
よろしくお願いします。
Re: C言語によるテキストファイルからデータの読み込みについて
で、結局、うまくいっていない「現在の」コードはどうなっているのですか?ほげお さんが書きました: コメントアウトされている部分がありますが、そこのコメントアウトは間違ってつけてしまったものです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: C言語によるテキストファイルからデータの読み込みについて
strcmp は文字列の比較です。h は char ですから、== で比較しましょう。
scanf の書式の '\n' は ' ' と全く同じ意味であり、
scanf の書式の ' ' には特別な意味があります。
それを理解した上で書いていますか?
scanf の書式の "%lf" は double に、"%f" は float に適用しますが、
printf の書式の "%f" は double です。"%lf" でも出力できますが。
while(fscanf(fp,"%lf %lf %c",&f,&g,&h) != EOF)
{
if(h == 'i')
{
printf("%f %f %c\n",f,g,h);
}
}
scanf の書式の ' ' には特別な意味があります。
それを理解した上で書いていますか?
scanf の書式の "%lf" は double に、"%f" は float に適用しますが、
printf の書式の "%f" は double です。"%lf" でも出力できますが。
Re: C言語によるテキストファイルからデータの読み込みについて
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;
}
訂正等加えた現在のプログラムはこちらになります。
しかし実行してみても何も出力されず困っております。
心当たりがあればご指摘いただきたいです。
#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言語によるテキストファイルからデータの読み込みについて
かずまさん
scanfにおける\nなど、理解できていませんでした。
勉強していきたいと思います。
ご指摘ありがとうございました。
プログラムを修正してみたのですが、実行しても何も出力されず困っております。
アドバイス等いただけると助かります。
よろしくお願いします。
scanfにおける\nなど、理解できていませんでした。
勉強していきたいと思います。
ご指摘ありがとうございました。
プログラムを修正してみたのですが、実行しても何も出力されず困っております。
アドバイス等いただけると助かります。
よろしくお願いします。
Re: C言語によるテキストファイルからデータの読み込みについて
char型の変数を入出力するときの書式文字列が
%s
というのは間違ってるような気がします。
%c
では?
%s
というのは間違ってるような気がします。
%c
では?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: C言語によるテキストファイルからデータの読み込みについて
無事解決できました!
アドバイスしてくださった方々、本当にありがとうございました。
C言語についての知識がまだまだなのでこれからも勉強していきたいと思います。
アドバイスしてくださった方々、本当にありがとうございました。
C言語についての知識がまだまだなのでこれからも勉強していきたいと思います。