c语言中的文件处理



我得到了一个包含几个jpg图像的原始文件。我必须遍历文件,找到每一张jpg图像,然后把它们分别放在一个单独的文件中。到目前为止,我有代码,可以找到每个图像开始和结束的地方。我还编写了代码,命名了几个文件名,我可以用来放置图片。它是一个数组:char filename[],保存名称:image00.jpg - image29.jpg。

我不能弄清楚的是如何打开一个文件,每次我找到一个图像,然后关闭该文件,并打开一个新的下一个图像。我需要使用fwrite()吗?此外,每个图像都在512字节的块中,所以我只需要在找到第一个图像后每512字节检查一个新图像。我需要把它添加到fwrite吗?

所以,总结一下我的问题,我不明白如何使用fwrite(),如果我应该使用它来写入这些文件。此外,我不知道如何使用我已经创建的名称打开文件。

提前感谢您的帮助。让我知道,如果我需要张贴任何其他代码。

  1. 使用fopen(rawfilename, "rb");打开原始文件进行读取。并读取其中的内容。
  2. 使用fopen(outfilename, "wb");打开输出文件进行写入,使用fwrite对输出文件进行写入。
  3. 正如我在评论中提到的,你将char *[]分配给char*,使用char filename[] = "image00.jpg";代替。
  4. 不要忘记在完成每个文件的处理后关闭它(r/w)(查看fclose()在其他链接的同一站点)
  5. 通过解析jpeg报头来决定每次读取多少字节。使用malloc来分配需要读取的字节数,记住,对于每个缓冲区分配,您都需要稍后释放分配的缓冲区。

几乎任何C编程书籍都应该涵盖您需要的函数。正如MByD所指出的,您将需要使用函数fopen()、fwrite()和fclose()。

我想您的代码可能包含类似于

的片段
/* Warning: untested and probably out-of-order code */
...
char **filename = {
    "image00.jpg", "image01.jpg", "image02.jpg",
    ...
    "image29.jpg" };
...
int index = 0;
const int blocksize = 512; /* bytes */
...
index++;
...
FILE * output_file = fopen( filename[index], "wb");
fwrite( output_data, 1, blocksize, output_file );
fclose(output_file);
...

相关内容

  • 没有找到相关文章

最新更新