文本文件的最后一行怎末去掉换行符,用程序实现。

gegegeg 2003-06-10 03:28:40
小弟通知数据采集程序(别的公司做)取我写的文件,那家公司要求文本文件最后一行不能有换行符,我的文件已经批量生成,怎末去掉文本文件的最后一行的换行符,用程序实现(别告诉我用UltraEdit打开,把光标移到最后一行,点一下BackSpace键,:))。
文件如下:
10
0110510101010101010603000400B6F1
0210910201010102010603000400BE53
0310510301010103010603000400532A
0410910401010104010603000400D03D
0510510102010105010603000400FD45
06101102020101060106030004001F00
0710110302010107010603000400CDEC
0810510402010108010603000400BBFC
09103101030101090105030004005EB7
0A1011020301010A010503000400A79D
0B1011030301010B0105030004007289
0C1031040301010C010503000400ACBA
0D1031010401010D01060300040076BA
0E2001020401010E010603000400F99A
0F1011030401010F01050300040009CC
10200104040101100105030004009DA7
...全文
774 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jbz 2003-06-13
  • 打赏
  • 举报
回复
学习学习
jbz 2003-06-11
  • 打赏
  • 举报
回复
其实,你完全可以使用UltraEdit的“搜索”/“批量文件替换”的功能,
一下子就把你指定目录下的所有文件替换了。

1、你可以在“查找”里填上:^p^p (代表文件末尾的两个回车,因为你上面帖出来的是两个回车)
2、替换为:(空,什么也不填)
3、目录指定一下,然后点击“全部替换”

你会发现成千上万的文件瞬间就解决了。根本不需要你编写什么代码的。
当然啦,用bcb练练手也可以.......
jbz 2003-06-11
  • 打赏
  • 举报
回复
下面代码可以的,我用你给的数据测试过。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String filename="1.txt";
Memo1->Lines->LoadFromFile(filename);
Memo1->Text=Memo1->Text.TrimRight();
Memo1->Lines->SaveToFile(filename);
}
//---------------------------------------------------------------------------
meCAD 2003-06-11
  • 打赏
  • 举报
回复
有个去掉前后空格或回车符的函数。好像叫Trim()什么的。

TListString读进来一行一行地去掉就可以了呀。
它里面有这个成员
jishiping 2003-06-11
  • 打赏
  • 举报
回复
TFileStream* Stream = new TFileStream(Edit1->
Text, fmOpenReadWrite);
Stream->Size = Stream->Size-2; delete Stream;
yhz 2003-06-11
  • 打赏
  • 举报
回复
To BCB(天下三分明月夜,二分无赖是扬州):
怎样设置文件的长度?
BCB 2003-06-11
  • 打赏
  • 举报
回复
下而的办法效率高:
定位到末尾,倒着找换行符,如果找到它的位置后,把文件的长度就设在
换行符的前一位置。文件的长度是可以改变的,变短相当于截尾。

BCB 2003-06-11
  • 打赏
  • 举报
回复
BOOL SetEndOfFile(
HANDLE hFile // handle of file whose EOF is to be set
); // 这是API的,可改变文件长度,配合 FileOpen()使用


BCB 2003-06-11
  • 打赏
  • 举报
回复
#include <io.h>
int chsize(int handle, long size); // 改变文件长度

Changes the file size.

chsize changes the size of the file associated with handle. It can truncate or extend the file, depending on the value of size compared to the file's original size.

yingyys 2003-06-11
  • 打赏
  • 举报
回复
众高手都说了
yhz 2003-06-10
  • 打赏
  • 举报
回复
我不知道有什么办法可以删除文件的内容。
不过可以试试看把最后一个换行符用空字符'\0'代替。

iFileHandle = FileOpen("FileName", fmOpenWrite);//打开文件
FileSeek(iFileHandle, 1, 2);//把指针移到最后一位。
FileWrite(iFileHandle, '\0', 1);//把最后一个换行符覆盖掉
FileClose(iFileHandle);

试试看行不行?



gegegeg 2003-06-10
  • 打赏
  • 举报
回复
有没有简便的办法,比如将文件指针定位到文本文件的最后一行的换行符处,去掉换行符?怎末实现?大虾help!
halibut 2003-06-10
  • 打赏
  • 举报
回复
把文件调进内存,去掉最后一个字符再保存回去不就行了么!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧