如何删除文本文件中的空格?在我的同事背后工作的原因是,他有很多文本文件,它们之间有大量的空白区域。通过击退退格,他越来越难以删除它们。所以我计划的是为此编写一个代码。我成功达到了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()它会在这里工作。任何想法都会得到回报。谢谢你
答案 0 :(得分:1)
您有严重的安全问题(gets()
),设计(goto
)和工具选择(这是一个脚本语言的工作,真的)。但要回答您的问题,请将duplicate.txt
文件复制到原始文件中。
答案 1 :(得分:1)
虽然我会同意其他海报有更好的选择,然后是C,你有几个安全和设计问题,我将回答你原来的问题。
你不能直接编辑文件,因为你不是简单地改变那里的东西 - 你正在改变长度和结构;因此,在某些时候你将复制:内存或第二个文件
malloc()
一个与原始文件大小相同的缓冲区(因为最坏的情况是它不能更多,最好的情况要小得多)并将你的字符读入内存。完成后,fopen()
原始文件带有“ w ”标记并将所有内容写回来。我通常会建议您复制然后删除重命名,但根据您的其他评论,这似乎不是您愿意接受的解决方案。
警告,但:在您重新打开文件的时间以及将所有内容写回的时间之后,您可能会丢失数据。
答案 2 :(得分:0)
答案 3 :(得分:0)
我知道你想要提高你的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'`
答案 4 :(得分:0)
你诱惑我写它。如果你不想要破坏者,不要看。