我如何在我的文本文件中删除空白使用c程序

  • 本文关键字:空白 程序 删除 文件 文本
  • 更新时间 :
  • 英文 :


如何在我的文本文件中删除空白?这背后的原因,我的同事,他有很多文本文件之间有大量的空白。他越来越难通过按退格键来移除它们。所以我打算写一个代码。我的成功率高达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()是原始文件大小的缓冲区(因为最坏的情况下它不能更多,最好的情况是更小),并将您的字符读入内存。完成后,用"w"标志fopen()您的原始文件并将所有内容写回来。我通常会建议您复制一份,然后删除-重命名,但根据您的其他评论,这似乎不是您愿意接受的解决方案。
有一个警告,但是:在您重新打开文件并将所有内容写回来的时间内,您可能会丢失数据。

首先要解决安全(gets())、设计(goto)和工具选择(这实际上是脚本语言的工作)等严重问题。但是要回答您的问题,请将duplicate.txt文件复制到原始文件上。

您可以打开文件进行读写操作并尝试一下:

P=fopen(array,"r+");

查看更多关于fopen的信息

我理解你想提高你的C语言技能,但是如果你安装了ruby,那么你可以在命令提示符下帮助你的同事编辑这个文件:

ruby -p -i -e '$_.squeeze!' file.txt

如果你想创建一个名为file.txt.backup的备份文件,那么:

ruby -p -i.backup -e '$_.squeeze!' file.txt

我认为如果你在末尾提供多个文件名,这甚至可以工作,所以你可以更花哨:

ruby -p -i -e '$_.squeeze!' *

ruby -p -i -e '$_.squeeze!' `find -name '*.txt'`

是你诱使我写的。如果你不想剧透,就不要看。

https://gist.github.com/1096670

相关内容

最新更新