今回も少し知恵を貸していただきたいと思っています。
C言語/ windows7 /Microsoft Visual C++ 2010 Expressを用いています。
例えば
テキストファイルに
A = [数値1]
A = [数値2]
A = [数値3]
中略
A = [数値N]
File End.
とあり、私はそこから 数値Nだけ(最後に現れる数値)だけを取り出したいと思っています。Nは定数ではなく、ファイルによってさまざまです。実際はこんなにシンプルではなくこれ以外の情報が大量に書き込まれたテキストですが、「A =」という文字列はその他の行には現れず、特異的な文字列です。
そのテキストファイルを一行ずつ読み 「A =」という文字列を見つけたときだけ、以下の手順を踏んで
if(strstr(str,key)){//「A =」がある行を探す
tok = strtok( str, s1 );//その行をバックスペースで区切る
while( tok != NULL ){
tokcounter ++;
if(tokcounter == 3){//区切ったものから数値を選ぶ
LastTok = tok;
}
}
}
このあとファイルをケツまで読み終わったら、LastTokをoutputファイルに書き出すのですが、なぜかそのとき 「File End.」の文字列が書き出されてきます。
この行に「A =」は現れませんし、「A =」が現れたときしかLastTokに文字列を収納(引き渡し)してないはずなのに!と自分では思うのですが、結果は正直なものでこの現象から抜け出せません。
具体的なファイルやプログラムの全体像を載せることが出来ないので、伝わりづらいかもしれませんが、何か打開策があればよろしくお願いします。