请问,文本文件中一行的标准是什么?是因为有一个换行符吗?(50分)

  • 主题发起人 主题发起人 deorsoft
  • 开始时间 开始时间
D

deorsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写个小程序,去掉文本文件中的空行,请问行的定义是什么?
 
在win32/dos中,回车+换行
在unix中,换行
 
#13#10是回车换行符的DELPHI表示
 
同上上,增加一点,回车符=#13,换行符=#10。 也就是说他门的ASCII码分别是 13 和 10 。
 
你说的-->我想写个小程序,去掉文本文件中的空行,请问行的定义是什么?
什么意思?是去掉所有只有空格的行吗? 空格的ASCII码是 $20 ,也就是 32
 
本质上,文本文件也是一个字符串(一个序列),在内存中并没有分开,是连续存放的,比如下面这段文本:

789
67

那么在内存中的情况是什么呢? -> '7''8'9''回''6''7' ,就象东兰梦舞说的那样,
所谓'回',在不同的系统是不同的表示,在windows用两个字符表示,他们是#13(回车符) #10(换行符)
,而在UNIX,只有一个#10(换行符),表示。 大概意思就是这样的。你明白了吗?
 
看看我的一部分代码
var lines :string;
begin
repeat
readln(infile,lines)

if trim(lines)='' then continue;
writeln(outfile,lines);
until eof(infile);
end;

 
//在windows與UNIX中一不一樣我不知道但這這樣處理應該沒問題.
procedure TForm1.Button1Click(Sender: TObject);
var
S : String;
sf, df : TextFile;
begin
if FileExists('c:/sf.txt') then
begin
AssignFile(sf, 'c:/sf.txt')
AssignFile(df, 'c:/df.txt');
Reset(sf)
Rewrite(df);
while not eof(sf) do
begin
Readln(sf, S);
if Trim(S) <> '' then if not eof(sf) then Writeln(df, S) else Write(df, S);
end;
CloseFile(sf)
CloseFile(df);
end;
end;
 
>>>是因为有一个换行符吗?
是的,但是有的时候,这个换行的符号用两个字符表示。
 
后退
顶部