更不用说这是我第一次使用 C 语言处理文件,很难理解 fread、fwrite 和所有这些爵士乐。所以我试图将输入文件夹中保存的文件头复制到另一个文件,并与输出指针一起存储。我在第 47 行不断收到关于 & read; 的错误“预期参数声明符”。总的来说,无论我做什么来阅读编译器都会对我尖叫。我不确定 fseek 是否有必要。有什么建议吗?
fseek(input, HEADER_SIZE, SEEK_SET);
int read;
fread(&read, HEADER_SIZE, 1, input);
fseek(input, HEADER_SIZE, SEEK_SET);
for (int i = 0; i < HEADER_SIZE; i++)
{
uint8_t fwrite(read[i], sizeof(int), 1, output);
fseek(input, i++ ,SEEK_CUR);
}
第 47 行的错误“expectedparameter declarator”是因为您缺少要写入的变量的地址。 fread 函数需要一个指向应读入数据的内存位置的指针。在您的情况下,您应该将读取变量的地址传递给 fread:
fread(&read, HEADER_SIZE, 1, input);
这将从输入文件中将 HEADER_SIZE 字节读取到读取变量中。
fseek 函数用于查找文件中的特定位置。在您的代码中,您在将其读入 read 变量后使用它来查找标头的开头。这是必要的,因为您想从一开始就将标头写入输出文件。 `fseek(输入, HEADER_SIZE, SEEK_SET); int 读取[HEADER_SIZE]; //声明一个数组来存储头数据 fread(读取, HEADER_SIZE, 1, 输入); // 将头部数据读入数组 fseek(输入, HEADER_SIZE, SEEK_SET); // 再次查找标题的开头
for (int i = 0; i < HEADER_SIZE; i++) { fwrite(read[i], sizeof(uint8_t), 1, output); // Write each byte of the header to the output file } `