Обработка файлов в c? - PullRequest
       11

Обработка файлов в c?

1 голос
/ 17 апреля 2011

Мне дали необработанный файл, содержащий несколько изображений jpg.Я должен просмотреть файл, найти каждое изображение jpg и поместить эти изображения в отдельный файл.Пока у меня есть код, который может найти каждый, где каждое изображение начинается и заканчивается.Я также написал код, который называет несколько имен файлов, которые я могу использовать для вставки изображений. Это массив: char filename [], который содержит имена: image00.jpg - image29.jpg.

Я не могу понять, как открывать файл каждый раз, когда я нахожу изображение, затем закрывать этот файл и открывать новый для следующего изображения.Нужно ли использовать fwrite ()?Кроме того, каждое изображение состоит из блоков по 512 байт, поэтому мне нужно проверять новое изображение каждые 512 байт, как только я найду первое.Мне нужно добавить это в fwrite?

Итак, чтобы подвести итог моих вопросов, я не понимаю, как использовать fwrite (), если это то, что я должен использовать для записи в эти файлы.Кроме того, я не знаю, как открыть файлы, используя имена, которые я уже создал.

Заранее спасибо за помощь.Дайте мне знать, если мне нужно опубликовать любой другой код.

Ответы [ 2 ]

1 голос
/ 17 апреля 2011
  1. Используйте fopen(rawfilename, "rb");, чтобы открыть необработанный файл для чтения. и Фред , чтобы читать с него.
  2. Используйте fopen(outfilename, "wb"); для открытия выходного файла для записи и fwrite для записи в него.
  3. Как упоминалось в моем комментарии, вы назначаете char *[] на char*, вместо этого используйте char filename[] = "image00.jpg";.
  4. Не забудьте закрыть каждый файл после завершения его обработки (r / w) (посмотрите на fclose() на том же сайте других ссылок)
  5. Определите, сколько байтов нужно читать каждый раз, анализируя jpeg header . Используйте malloc для выделения количества байтов, необходимых для чтения, и помните, что для каждого выделения буфера вам необходимо освободить выделенный буфер позже.
0 голосов
/ 17 апреля 2011

Практически любая книга по программированию на 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);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...