2016-12-08 11 views
0

文字ファイルごとに文字ファイルを読み込んで、そのファイルに特定の値が含まれているかどうかを調べる小さなプログラムがあります。ファイルを1文字ずつ読み込み、Cでそれらの文字を比較する

別の文字の隣に文字Aがある場合は、ファイルで2番目の文字を新しい行にプッシュして結果を出力します。私は、次のテキストファイルがあった場合たとえば、:

をABABAAAB

は、印刷結果は次のようになります。

A 
B 
A 
B 
A 
A 
A 
B 

私は変数に読まれている現在の文字を格納する必要があるだろうが、「prevCharと呼ばれると言います次の文字を "currentChar"という変数に記録して比較し、結果を出力しますか?すべてのキャラクターのためにこれを続けますか?

+0

はいこれを続けてください。 –

+0

私はそれを理解しているので、* 2 *の連続する文字の各ペアに基​​づいて出力に改行を挿入するかどうかを決定する必要があります。したがって、一度に2文字程度の情報をメモリに保持する必要があります。しかし、最新の2つ前の文字について何かを覚えておく必要はありません。あなたが記述した線に沿ったアプローチは、それを実装する自然な方法です。 –

+0

Cでこれがどのように見えるのか分かりますか?私はそれが自明だと確信しています、私はちょうどそれを働かせるように見えることはできません。 – Gaarsin

答えて

1

boolという変数、たとえばboolean newLine = false;falseに初期化することでこれを行うことができます。これは、最後の文字がAかどうかを知らせる指標になります。

boolean newLine = false; 
    FILE *fp; 
    int c; 

    fp = fopen("datafile.txt", "w"); 

    while((c = fgetc(fp)) != EOF) { 
     if (newLine) { 
      // Here you put char in new line 
      if (c == 'A'){ 
       newLine = true; 
      } 
      else { 
       newLine = false; 
      } 
     } 
    } 

    fclose(fp); 
関連する問題