基本的に、私は次のようなファイルからデータの「ブロック」を読み取ろうとしています。
000000000
000000001
000100000
100000000
000000000
000000000
000000000
上記の例は、2ブロックのデータに変換されます。1つ目は4行の高さ、2つ目は3行の高さです。
ダブルスペースは「ブロック」を区切ります。
これが、ダブルスペースが発生するまで読み取るコードです。(これは最初のループを読み取り、次にfseek
読み取りたい他のブロックを読み取るために使用します-この質問では実際には重要ではありません)
while(!endofblock){
firstchar = fgetc(fptr); //read the first character
if(firstchar == '\n'){
if(fgetc(fptr) == '\n'){ //if its newline AND newline
endofblock = 1; //end of block is reached, loops break
}else{ //if its just one new line
*h = *h + 1; //increment h (height), a pointer passed from elsewhere
}
}
if(feof(fptr)){
endofblock = 1;
}
}
これはほとんどの場合正常に機能しますが、機能しない複雑で説明のつかないケースがあります。さらに、それは非常に肥大化していて散らかっています。
数を数え、到達new line
したときに数えるのをやめる、よりきちんとした、より良い方法はありますか?double new line