'预期参数声明符'。在 c 中处理文件

问题描述 投票:0回答:1

更不用说这是我第一次使用 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);

    }

c file io cs50 fwrite
1个回答
0
投票

第 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 } `

© www.soinside.com 2019 - 2024. All rights reserved.