gpt4 book ai didi

c - 如何在 C 语言中删除文件末尾不需要的字符?

转载 作者:行者123 更新时间:2023-11-30 17:35:44 24 4
gpt4 key购买 nike

因此,我有一些代码允许用户在文本文件中任意写入,这要感谢How do I write to a specific line of file in c?的答案。 ,但是我遇到了一个新的障碍,每当我写回文件时,最后一个单词的末尾总是会出现一个烦人的随机字符,如果它在第一行,则会在它之前创建一个新行。我知道这与文件副本有关,但我不知道在哪里,有人可以帮忙吗?

int main()
{
FILE *fp,*fc;
int lineNum;
int count=0;
int ch=0;
int edited=0;
char t[16];


fp=fopen("start.txt","r");
fc=fopen("end.txt","w");

if(fp==NULL||fc==NULL)
{
printf("\nError...cannot open/create files");
return 1;
}

printf("\nEnter Line Number Which You Want 2 edit: ");
scanf("%d",&lineNum);

while((ch=fgetc(fp))!=EOF)
{
if(ch=='\n')
count++;
if(count==lineNum-1 && edited==0)
{
printf("\nEnter input to store at line %d:",lineNum);

scanf(" %s[^\n]",t);

fprintf(fc,"\n%s\n",t); /

edited=1;

while( (ch=fgetc(fp))!=EOF )
{
if(ch=='\n')
break;
}
}
else
fprintf(fc,"%c",ch);
}
fclose(fp);
fclose(fc);

if(edited==1)
{
printf("\nCongrates...Error Edited Successfully.");

FILE *fp1,*fp2;
char a;
system("cls");

fp1=fopen("end.txt","r");
if(fp1==NULL)
{
puts("This computer is terrible and won't open end");
exit(1);
}

fp2=fopen("start.txt","w");
if(fp2==NULL)
{
puts("Can't open start for some reason...");
fclose(fp1);
exit(1);
}

do
{
a=fgetc(fp1);
fputc(a,fp2);
}
while(a!=EOF);

fclose(fp1);
fclose(fp2);
getch();
}


else
printf("\nLine Not Found");

return 0;
}

(抱歉身份问题,我很着急)

最佳答案

尝试更改您的 do-while 循环,例如,

while((a=fgetc(fp1))!=EOF)
fputc(a,fp2);

我想这会解决你的问题。

关于c - 如何在 C 语言中删除文件末尾不需要的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22932250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com