C 有没有办法在读取文本文件后删除第一个字符?

C 有没有办法在读取文本文件后删除第一个字符?,c,file,text,character,C,File,Text,Character,有没有办法在阅读文本文件后删除第一个字符? 我希望程序从文本文件中读取字符,一旦使用它,就应该删除从文本文件中读取的当前字符。 不能在开始时插入,在开始时删除,插入中间,在文件中间删除,不重写。可以在末尾追加。有时可以在最后删除(取决于平台)。根据您的需要和系统,您可能会感兴趣。至少他们有能力做你想让他们做的事。尽管管道用于进程间通信 Linux的外观 对于Windows外观。您不能从文件中删除字符,您可以修改它们,并从逻辑上说数据已被删除 我们无法删除文件内容。您可以在要删除文件中字符的位置添

有没有办法在阅读文本文件后删除第一个字符?
我希望程序从文本文件中读取字符,一旦使用它,就应该删除从文本文件中读取的当前字符。

不能在开始时插入,在开始时删除,插入中间,在文件中间删除,不重写。可以在末尾追加。有时可以在最后删除(取决于平台)。

根据您的需要和系统,您可能会感兴趣。至少他们有能力做你想让他们做的事。尽管管道用于进程间通信

Linux的外观


对于Windows外观。

您不能从文件中删除字符,您可以修改它们,并从逻辑上说数据已被删除

我们无法删除文件内容。您可以在要删除文件中字符的位置添加*(或文件中没有的任何内容),而不是删除

在多次删除之后,文件中有很多*。只需将文件中除*以外的所有文件复制到新文件

删除旧文件 将新文件重命名为旧文件

您只需将删除的零件后的数据复制到要删除的零件上即可

请参阅此代码:

#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;
}
#包括
#包括
int main(){
FILE*fp=fopen(“FILE.txt”,“r+”);/*打开进行读写*/
文件*fp1=fopen(“new.txt”,“a+”);
文件*fp2=fopen(“new2.txt”,“a+”);
char ch;
int i=0,n;
printf(“输入要从文件中删除的字符数\n”);
scanf(“%d”和“&n”);
而((ch=fgetc(fp))!=EOF)和&(in)
fputc(“%c”,ch);
i++;
}
printf(“\n\n”);
fclose(fp);
fclose(fp1);
fclose(fp2);
//使用rename()和remove()函数删除旧文件,然后将新文件重命名为旧文件。
返回0;
}

请…首先尝试一些东西,然后如果您对该代码有任何问题,请使用该代码。在不重写文件其余部分的情况下,您无法删除它。对我来说,这听起来像是您需要一个管道。@dasblinkenlight但这个问题可能意味着“如何从存储文件的缓冲区中删除第一个字符?”?最好从OP.user2402501获得澄清。您需要编辑文件本身还是只需编辑您读入程序的数据副本?我每次只需要读入一个字符,一旦读入,就必须从文本文件中删除。必须检查一个字符,然后才能执行适当的操作。我是试图构建有限自动机。