如何使用 C 将文件中的字节读入字符串和整数?

How do I read bytes from a file into strings and ints using C?

我使用 C 的 fwrite 写了一个文件,我在其中写了一个字符串,然后是一些整数,多次。我用这段代码写:

fwrite(&words,sizeof(char),strlen(words) - 1, outputFile);
fwrite(&nextNum,sizeof(int),1, outputFile);

如何将我的文件读回字符串和整数?

此外,从文件中读取一个整数数组而不是多个连续的整数会更快吗?

写入文件的方式会丢失一条关键信息:字符串的长度。一般有以下三种处理方式:

  1. (效率最低!)假设您的字符串短于 10 个字符,并且总是写入 10 个字符(根据需要用空格填充)并读回 10 个字符,修剪空格。这是 "fixed-width" 格式。
  2. 在你写的每个字符串前加上长度信息,比如说一个 16 位的字(所以你将字符串的大小限制在 64K,这对大多数应用程序来说足够了)
  3. 使用 字符串结尾 指示符。最明显的一个是用于标准 C 字符串的 '[=10=]' 空终止符

当然,回读将取决于您选择写出字符串的技术。但是一旦你完成了字符串的可变长度复杂化 writing/reading 整数(它们总是精确的,已知的大小)应该是一件轻而易举的事。