2

一度読んだテキストファイルの最初の文字を削除する方法はありますか? プログラムにテキスト ファイルから文字を読み取らせたいのですが、使用すると、テキスト ファイルから読み取った現在の文字を削除する必要があります。

4

3 に答える 3

3

ファイルの先頭に挿入、先頭で削除、途中で挿入、途中で削除することは、ファイルを書き換えずに行うことはできません。最後に追記可能です。最後に削除できる場合もあります (プラットフォームによって異なります)。

于 2013-09-14T12:46:18.027 に答える
0

ファイルから文字を削除することはできません。それらを変更することはできます。論理的には、データが削除されたと言います。

ファイルの内容を削除することはできません。削除する代わりに、ファイル内の char を削除する位置に * (またはファイルにないもの) を追加できます。

さらに多くの削除を行った後、ファイルに * がたくさんあります。ファイル内の * を除くファイル全体を新しいファイルにコピーするだけです

古いファイルを削除 新しいファイルを古いファイルにリネーム

また

削除したい部分の上に、削除した部分の後のデータをコピーするだけです..

このコードを参照してください:

#include <stdio.h>
#include <stdlib.h>

int main(){

FILE *fp = fopen("file.txt","r+"); /* Open for reading  and writing */
FILE *fp1=fopen("new.txt","a+");
FILE *fp2=fopen("new2.txt","a+");

char ch;
int i=0,n;

printf("Enter how many characters do you want to delete from file\n ");
scanf("%d",&n);
while(((ch = fgetc(fp)) != EOF )&&( i<n))
{
fseek(fp,-1,SEEK_CUR);
fputc('*',fp);
i++;
}

printf("file after delete\n");
rewind(fp);
while((ch = fgetc(fp)) != EOF )
{
if(ch!='*')
printf("%c",ch);
}

printf("copy to another file after delete\n");
rewind(fp);
while((ch = fgetc(fp)) != EOF )
{
if(ch!='*')
fputc(ch,fp1);
}


printf("file after delete\n");
rewind(fp);
while((ch = fgetc(fp)) != EOF )
{
if(ch!='*')
printf("%c",ch);
}


printf("delete first n characters from new.txt delete\n");

printf("Enter how many characters do you want to delete from file\n ");
scanf("%d",&n);
i=0;
rewind(fp1);
while((ch = fgetc(fp1)) != EOF )
{
if(i>n)
fputc("%c",ch);
i++;
}



printf("\n\n");
fclose(fp);
fclose(fp1);
fclose(fp2);
//use rename() and remove() functions to delete old file and then rename new file as old one.
return 0;
}
于 2013-09-14T14:49:10.657 に答える
0

ニーズとシステムによっては、パイプに興味があるかもしれません。少なくとも、彼らはあなたが望むことを実行できます。パイプはプロセス間通信を目的としていますが。

Linux については、こちらをご覧ください。

Windows については、こちらをご覧ください。

于 2013-09-14T12:59:21.443 に答える