int i, j;
CFile* fp = ar.GetFile();
FileName = fp->GetFileName();
if(FileName,*.M,I.*)
{
if( fp->GetLength() < HEADER_SIZE ) {
return;
}
fp->Seek( HEADER_SIZE, CFile::begin );
unsigned short *y;
y = p;
for ( i=0; i<IMAGEDATA_SIZE; i++, y++)
{
fp->Read(y, sizeof( unsigned short ));
}
}
else if(FileName,t.*)
{
ifstream mystream;
if(FileName,a.*)
{
for( i = 0; i < NX; i++ ){
for( j = 0; j <NY; j++ ){
mystream >> Data[j][i];}}
}
}
これはSerialize(CArchive& ar)で行っています。
なぜか上のは読めるのですが下が読めません
ファイル名をelse ifの方を選択しても上の方が選ばれてしまいます。
選択の使い方が間違っているんでしょうか?
上がバイナリ-で下がアスキーファイルです
教えてください
過去ログ読んで自分の質問の仕方に不備がないか良く考えましょう。
『読めない』という表現ではどう『読めない』のかがわかりません。
参考スレッドです。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200301/03010080.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200301/03010081.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200301/03010083.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200301/03010085.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200301/03010091.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200301/03010123.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200302/03020029.txt
単にifの使い方を間違ってるだけでは?
すいません、どう間違っているのか教えてください;;
> すいません、どう間違っているのか教えてください;;
> if(FileName,*.M,I.*)
は,
if(I.* != 0)
つまりは
if(true)
と同じなので,else節には一切処理が行きません。
if (FileName == *.M || FileName == I.*)
としたいのかな?
if文についての勉強をちゃんとしてください。C/C++言語の基礎知識なので。
if文はこっちでも、、、
http://www.microsoft.com/JAPAN/developer/library/default.asp?
URL=/japan/developer/library/vclang/_clang_the_c_if_statement.htm
それとこれか???
http://www.microsoft.com/JAPAN/developer/library/default.asp?
URL=/japan/developer/library/vclang/_clang_sequential.2d.evaluation_operator.ht
m
もし、ファイルが**MとI.**だったら上のファイル読み込み、
もし、t**というファイルなら下の読み込みに行くようにしたいです
else if(FileName,t.*)
{
ifstream mystream;
if(FileName,a.*)
{
// if分の書き方も間違っているが・・・
// ここにくることはありえないでしょう
// if(FileName ==t.* && FileName ==a.*) 絶対に無理!
}
}
>もし、ファイルが**MとI.**だったら上のファイル読み込み、
>もし、t**というファイルなら下の読み込みに行くようにしたいです
if(ファイルが**MとI.**だったら)
上のファイル読み込み
else if(t**というファイルなら)
下の読み込み
ファイル名の判定は
・最後の文字が'M'で最後から一個前が'.'なら上の読み込み
・一文字目が’I’で,二文字目が’.’なら上の読み込み
そうじゃなくて
・一文字目が’t’なら下の読み込み
こんなかんじになるのではないでしょうか?
if文が違うというのはどこがどう違うのか教えてもらえないですか?
>if文が違うというのはどこがどう違うのか教えてもらえないですか?
>if(FileName,*.M,I.*)
これは,if文の書式としては間違ってませんが
あしゅさんのやりたいことを実現する手段としては間違っています.
>if(FileName,*.M,I.*)
はYuOさんもおっしゃってるように
if(I.* != 0)
という風に,C言語では解釈されます.
あなたの頭の中では
>if(FileName,*.M,I.*)
かけば,
>もし、ファイルが**MとI.**だったら上のファイル読み込み、
となるかもしれませんが,
C言語ではそのように解釈されません.
で,
ファイル名の判定は
・最後の文字が'M'で最後から一個前が'.'なら上の読み込み
・一文字目が’I’で,二文字目が’.’なら上の読み込み
そうじゃなくて
・一文字目が’t’なら下の読み込み
こんなかんじでどうでしょう?
>>こんなかんじでどうでしょう?
ごめんなさい、少しわかりにくいのでもう少し説明お願いします
>ごめんなさい、少しわかりにくいのでもう少し説明お願いします
>if(FileName,*.M,I.*)
この文が,
>もし、ファイルが*.MとI.*だったら
ということをあらわしているとして,*がワイルドカードだとすると,
このif文は,
「最後(ヌルを除いて)が'M'で,最後から一文字目が'.'のファイル名か,
最初が'I'で,二文字目が'.'のファイル名の場合」
この条件にあてはまるファイル名なら上のファイルを読み込んでください.
で,
>if(FileName,t.*)
は,上と同じ仮定の基では
「最初が't'で,次が'.'のファイル名なら」
という解釈になるので,このようなファイル名なら
下の読み込みにいってください