ファイル – プログラミング – Home

通知
すべてクリア

ファイル

固定ページ 1 / 3

あしゅ
 あしゅ
(@あしゅ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

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の方を選択しても上の方が選ばれてしまいます。
選択の使い方が間違っているんでしょうか?
上がバイナリ-で下がアスキーファイルです
教えてください


引用解決済
トピックタグ
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

過去ログ読んで自分の質問の仕方に不備がないか良く考えましょう。

『読めない』という表現ではどう『読めない』のかがわかりません。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359

返信引用
トスポ
 トスポ
(@トスポ)
ゲスト
結合: 23年前
投稿: 36
 

単にifの使い方を間違ってるだけでは?


返信引用
あしゅ
 あしゅ
(@あしゅ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

すいません、どう間違っているのか教えてください;;


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

> すいません、どう間違っているのか教えてください;;

> if(FileName,*.M,I.*)
は,
if(I.* != 0)
つまりは
if(true)
と同じなので,else節には一切処理が行きません。
if (FileName == *.M || FileName == I.*)
としたいのかな?

if文についての勉強をちゃんとしてください。C/C++言語の基礎知識なので。


返信引用
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

 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


返信引用
あしゅ
 あしゅ
(@あしゅ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

もし、ファイルが**MとI.**だったら上のファイル読み込み、
もし、t**というファイルなら下の読み込みに行くようにしたいです


返信引用
(ゥ?
 (ゥ?
(@(ゥ?)
ゲスト
結合: 22年前
投稿: 1
 

else if(FileName,t.*)
{
ifstream mystream;
if(FileName,a.*)
{
// if分の書き方も間違っているが・・・
// ここにくることはありえないでしょう
// if(FileName ==t.* && FileName ==a.*) 絶対に無理!
}
}


返信引用
マップ
 マップ
(@マップ)
ゲスト
結合: 23年前
投稿: 17
 

>もし、ファイルが**MとI.**だったら上のファイル読み込み、
>もし、t**というファイルなら下の読み込みに行くようにしたいです

if(ファイルが**MとI.**だったら)
上のファイル読み込み
else if(t**というファイルなら)
下の読み込み

ファイル名の判定は
・最後の文字が'M'で最後から一個前が'.'なら上の読み込み
・一文字目が’I’で,二文字目が’.’なら上の読み込み
そうじゃなくて
・一文字目が’t’なら下の読み込み

こんなかんじになるのではないでしょうか?


返信引用
あしゅ
 あしゅ
(@あしゅ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

if文が違うというのはどこがどう違うのか教えてもらえないですか?


返信引用
マップ
 マップ
(@マップ)
ゲスト
結合: 23年前
投稿: 17
 

>if文が違うというのはどこがどう違うのか教えてもらえないですか?

>if(FileName,*.M,I.*)
これは,if文の書式としては間違ってませんが
あしゅさんのやりたいことを実現する手段としては間違っています.

>if(FileName,*.M,I.*)
はYuOさんもおっしゃってるように
if(I.* != 0)
という風に,C言語では解釈されます.

あなたの頭の中では
>if(FileName,*.M,I.*)
かけば,
>もし、ファイルが**MとI.**だったら上のファイル読み込み、
となるかもしれませんが,
C言語ではそのように解釈されません.


返信引用
マップ
 マップ
(@マップ)
ゲスト
結合: 23年前
投稿: 17
 

で,

ファイル名の判定は
・最後の文字が'M'で最後から一個前が'.'なら上の読み込み
・一文字目が’I’で,二文字目が’.’なら上の読み込み
そうじゃなくて
・一文字目が’t’なら下の読み込み

こんなかんじでどうでしょう?


返信引用
あしゅ
 あしゅ
(@あしゅ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

>>こんなかんじでどうでしょう?

ごめんなさい、少しわかりにくいのでもう少し説明お願いします


返信引用
マップ
 マップ
(@マップ)
ゲスト
結合: 23年前
投稿: 17
 

>ごめんなさい、少しわかりにくいのでもう少し説明お願いします

>if(FileName,*.M,I.*)
この文が,

>もし、ファイルが*.MとI.*だったら
ということをあらわしているとして,*がワイルドカードだとすると,
このif文は,
「最後(ヌルを除いて)が'M'で,最後から一文字目が'.'のファイル名か,
最初が'I'で,二文字目が'.'のファイル名の場合」
この条件にあてはまるファイル名なら上のファイルを読み込んでください.

で,
>if(FileName,t.*)
は,上と同じ仮定の基では
「最初が't'で,次が'.'のファイル名なら」
という解釈になるので,このようなファイル名なら
下の読み込みにいってください


返信引用
固定ページ 1 / 3

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました