gpt4 book ai didi

c - 如何使用 C 程序删除文本文件中的空格

转载 作者:行者123 更新时间:2023-11-30 14:28:03 25 4
gpt4 key购买 nike

如何删除文本文件中的空格?我的同事,在这背后工作的原因是,他有很多文本文件,文件之间有大量的空白。对他来说,通过按退格键来删除它们变得越来越困难。所以我计划为此编写代码。而且我的成功率高达 99%。检查我编写的以下代码。

#include<stdio.h>

int main()
{
int b;
char array[100];
gets(array); \\ file name to be given here
FILE *P;
FILE *T;
P=fopen(array,"r");
T=fopen("./duplicate.txt","w");
for(;(b=getc(P))!=EOF;)
{
if(b==32)
{
fputc(b,T);
me:
b=getc(P);
if(b==32)
goto me;
}
fputc(b,T);
}
}

代码工作完美,但我所做的是通过创建原始文本文件的副本。但我不想复制,我想重写原始文件本身。我尝试了原始文本文件。但有些地方出了问题。

我有如何处理它的算法,例如保存字符串并将它们写回文件,但我认为这不是有效的方法。伙计们,我有疑问

fputs("\b",filepointer);

这些会创建一个退格键吗?我想答案是不会。因为它写的是退格字符而不是执行退格操作。但我认为有一个函数 ungetc() 可以在这里工作。任何想法都会得到奖励。谢谢

最佳答案

虽然我同意其他发帖人对此有比 C 更好的选择,并且您有几个安全和设计问题,但我将回答您最初的问题。

<小时/>

您不能直接就地编辑文件,因为您不仅仅是更改其中的内容 - 您正在更改长度和结构;因此,在某些时候您将进行复制:要么复制到内存,要么复制到第二个文件。
malloc() 一个缓冲区,其大小为原始文件的大小(因为最坏的情况不能更大,最好的情况要小得多)并将字符读入内存。完成后,fopen() 带有“w”标志的原始文件并将所有内容写回。我通常会建议您制作一个副本,然后删除重命名,但根据您的其他评论,这似乎不是您愿意接受的解决方案。
警告:在您重新打开文件以及写回所有内容期间,您可能会丢失数据。

关于c - 如何使用 C 程序删除文本文件中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771458/

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