PROGRAM archivosejercic1o;
TYPE
num = file of integer;
VAR
arch_num: num;
name: string[20];
x: integer;
BEGIN
writeln('Type the name of the file without extension:');
readln(name);
name:=name+'.txt';
Assign (arch_num,name);
Rewrite(arch_num);
writeln('Type in a number to add to the file:');
readln(x);
WHILE (x <> 0) DO BEGIN
write(arch_num,x);
writeln('Type in another number to add to the file:');
readln(x);
END;
close(arch_num);
END.
我有这段代码可以创建一个由用户提供的一系列数字的文件,在编译并执行该文件后,该文件会出现在Pascal目录中,但是当我打开它时,会得到类似这样的信息:
我刚刚开始与档案馆互动,所以我是新手,如果您能帮助我,我会很感激。
答案 0 :(得分:2)
您正在打开file of Integer
。这意味着您将整数写入文件,即文件为 binary 格式。
但是您将其命名为name + '.txt'
,这向我建议您要将文本(而不是二进制值)写入文件。
现在,如果您将其显示为文本,但它不是文本,那么您将无法获得所需的内容。
二进制意味着您例如将一个4字节整数写为12345
(或十六进制$3039
)作为那4个字节,即字节{{1} },$39
,$30
和$00
的顺序(或相反的顺序,取决于您计算机的endianness)。
二进制很紧凑,但是很少为人所读。如果将这样的二进制文件显示为 text ,则可能会得到奇怪的输出,甚至根本没有输出(只需尝试在文本编辑器中打开 .exe 文件,然后看你得到什么)。您可能想将数字写为文本。或者,您可以使用十六进制编辑器等工具查看它们(如果您可以阅读十六进制)。
因此,以$00
类型打开文件:
text
有关 binary 与 text 的更多信息:https://fileinfo.com/help/binary_vs_text_files。请注意,这还不能解释Unicode文本的不同版本。