今日のプログラミング5
何でうまくいかなかったのかな。

いかに書いたのは最終的たどり着いた答えで、うまくいきました。

---------------------------------------------------------------------------------------------------

プログラムは任意の名前のテキストファイルで書かれたデータを読み込んで、それをもとに値段を算出するプログラムです。

/****テキストファイルの中身****/
hakusai 100
daikon 120
tori 180
buta 190
toufu 80
/***********************/



#include
#include
#include
#define NUM 100
#define TRUE 1

struct nabe{

int hakusai;

・/*** 計 int型4つ float型1つ***/

};

void price(struct nabe*,char[]);
int main(void);

int main(void)
{
structure nabe mynabe={0,0,0,0,0.0};



price(&mynabe,filename);



}

void price(struct nabe *yournabe,char fn_load[])
{
FILE *fp_load;
int nedan;
char moji[NUM],food[NUM];

/*** fp_load=fオープン(fn_load,"r"); ***/←エキサイト側からエラーが出たw

if(fp_load==NULL)
{
exit(0);
}

while(TRUE)
{
fgets(moij,NUM,fp_load);

sscanf(moji,"%s %d",food,&nedan);

if(strcmp(food,"hakusai")==0)
{
yournabe->hakusai=nedan;
}
if(strcmp(food,"tori")==0)
{
yournabe->tori=nedan;
}

if(strcmp(food,"daikon")==0)
{
yournabe->daikon=nedan;
}
if(strcmp(food,"toufu")==0)
{
yournabe->toufu=nedan;
}


if(ferror(fp_load))
{
break;
}
if(feof(fp_load))
{
break;
}

}
fclose(fp_load);
}

---------------------------------------------------------------------------------------------------

このvoid priceの中の文で最初はstrcmpを使わないで

if( food == 'hakusai')

みたいにしてfoodとhakusaiが同じだったときに安易に考えてやったんですけど、エラーがでてどうしても対処できなかったんですよね。

strcmpを使わない文で何とかできなかったのかなと考えてるんですが、分かんないんですよね。

結局よくできる友人にstrcmpを教えてもらって何とかできました。

う~ん。いまいちスッキリしない。
[PR]
by akito_621 | 2012-05-14 22:14 | Comments(3)
Commented by れんと at 2012-05-14 22:39 x
food == "hakusai" は、Cでは意図したようにはならないんですよ。
比較されるのは、foodの先頭アドレスと、"hakusai"の先頭アドレスなのです。
もし、foodが文字列のポインタで、前もって
char *food= "hakusai";
とやっていれば、
if (food == "hakusai")
も意味を持ちます。
ただし、Cの処理系が、複数の"hakusai"を同じ場所に格納する場合に限ります。
Commented by れんと at 2012-05-14 22:41 x
まあ、とりあえず、文字列やメモリを扱う時は、str*()やmem*()の関数を使うべきであると覚えておきましょう。
Commented by akito_621 at 2012-05-14 22:59
>れんとさん
なるほど!納得がいきました。ありがとうございます。
すごいもやもやしてたので助かりました^^

str*(),mem*()ですね。覚えておきます。
memは初耳だったので調べておきます。ありがとうございました。
<< 大後寿々花 今日のプログラミング4 >>