2017-05-09 16 views
0

ファイルを空白なしにしたいのですが、以下のコードを試してみました。どのようにしてcharを削除すればよいのか分からないので、バックスペース(印字不可能な文字)これはcのファイルから空白を削除する方法

(ie.copyすべての空白を除く)、新しいファイルを使用せずに?、これを行うための任意の作業方法はありファイルが

abcd efgh 

ある

#include <stdio.h> 
int main() 
{ 
FILE* fp; 
fp = fopen("in.txt","r+"); 
int ch; 
while((ch = getc(fp))!=EOF){ 
    if((ch == ' ') || (ch == '\n')){ 
     fputc(8,fp); 
     } 

    } 
} 

を動作するようには思えません

+1

バックスペース文字 ''\ b''をファイルに書き出すと、バイトが書き出されます(通常は値は8ですが、'' \ b''を使用する必要があります)。ファイル位置を1つ進めます他のキャラクタを出力するときと同じです)。後方に移動したい場合は、 'fseek()'を使う必要があります。更新モードでは、それぞれの読み込み操作と書き込み操作との間、およびそれぞれの書き込み操作と読み込み操作の間に、 'fseek()'または別の位置決め操作を使用する必要があることに注意してください。それ以外は未定義の動作です。 –

答えて

2

チャージャーを削除することはできませんファイルの途中にあるracter。

あなたがする必要があるのは、新しいファイルを作成し、が新しいファイルにではないすべての文字を書き込むことです。必要に応じて古いファイルを削除することができます。

+0

putc()でバックスペースchar(ASCII 8)を渡すと何も起こりませんか? –

+1

@FenilSuchakファイルにバックスペース文字を書き込んでいませんか?その場合は、読み書きの間にfseekを呼び出さなかったか、ファイルを閉じなかったことが原因である可能性があります。 – immibis

関連する問題