我正在尝试通过空调制解调器串行电缆将文件传输到旧的PCjr。我整理了一个快速的BASIC脚本以从串行端口读取数据并将其写入文件,但是我发现保存的每个文件最后都有一个额外的字节0x1a。
这似乎是由CLOSE
语句引起的,因为即使OPEN
和CLOSE
写入文件而未写入任何内容也会导致一个字节的文件。
我不想在文件末尾添加SUB字符,尤其是二进制文件!是否有另一种写文件的方法可以防止这种情况发生?
(在Lubuntu VM中使用出色的"PC-BASIC"进行演示,但这似乎是BASIC所有变体中的“物”)
josh2112@jf334-lubuntu-vm:~$ pcbasic -b
PC-BASIC 2.0.0
(C) Copyright 2013--2018 Rob Hagemans.
60300 Bytes free
Ok
OPEN "O",#1,"TEST.TXT":PRINT#1,"hello world";:CLOSE:SYSTEM
josh2112@jf334-lubuntu-vm:~$ xxd TEST.TXT
00000000: 6865 6c6c 6f20 776f 726c 641a hello world.
答案 0 :(得分:2)
也许这可以帮助您
Batch script to merge files without Hex char 1A at the end
该文章讨论了DOS如何使用EOF指示器处理复制数据以及这些标志如何工作。您能按指示的开关批量复制文件吗?
问题作者的编辑:是的,就是这样。所需的特定命令是
copy src.bin /a dest.bin /b
。这将从文件末尾剥离EOF字节。甚至在DOS 2.10中也支持该功能!令人烦恼的是,在使用我的BASIC程序保存文件后,我必须执行此额外步骤,但是它完成了工作。
答案 1 :(得分:0)
将字符串写到数据输出文件而不尾随eof char的功能:
select * from t,
table(myfunc(col1, col2) over (partition by col3 order by row_number));
------+------+------+------------+-------+
COL1 | COL2 | COL3 | ROW_NUMBER | MATCH |
------+------+------+------------+-------+
b | c | s | 4 | FALSE |
a | d | s | 5 | TRUE |
a | d | r | 1 | FALSE |
a | c | r | 2 | FALSE |
b | d | r | 3 | FALSE |
a | d | r | 6 | TRUE |
------+------+------+------------+-------+