|
|
|
| Есть задача: скопировать файл в двоичном режиме, вставляя в выходной файл (создаем пустой, в него и копируем) после каждых 512 байт пустые 8 байт. Делаю так:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
FILE *fin, *fout;
main(int argc, char *argv[]) {
unsigned char *buffer = new char[512];
if(argc < 3) {
cout << "File execute error";
}
fin = fopen(argv[1], "rb");
fout = fopen(argv[2], "w+b");
while(feof(fin)) {
fread(&buffer, 512, 1, fin);
fwrite(&buffer, 512, 1, fout);
fread(&buffer, 8, 1, fout);
}
cout << "Ok !";
return 0;
}
|
Что не так делаю ? | |
|
|
|
|
|
|
|
для: DDK
(18.02.2007 в 15:56)
| | А вот эта строка
fread(&buffer, 8, 1, fout); |
для чего? | |
|
|
|
|
|
|
|
для: cheops
(18.02.2007 в 16:56)
| | для смещения указателя в файле на 8 байт, чтобы их пропустить (задача в этом). Пробовал заменять на fseek, ничего не менялось. | |
|
|
|
|
|
|
|
для: DDK
(18.02.2007 в 18:12)
| | Скорее вместо этой строки
fread(&buffer, 8, 1, fout);
|
напрашивается строка
fwrite(zero, 8, 1, fout);
|
Где zero описан выше примерно так:
| |
|
|
|
|
|
|
|
для: DDK
(18.02.2007 в 18:12)
| | А нельзя просто сделать вот так:
fprintf(fin,"\0\0\0\0\0\0\0\0");
|
| |
|
|
|
|
|
|
|
для: alex19921992
(28.02.2007 в 04:46)
| | Нельзя. Первый же нуль будет воспринят как символ конца строки. | |
|
|
|
|
|
|
|
для: DDK
(18.02.2007 в 15:56)
| | Спасибо, сам справился :) поколупался, поколупался... и родил. | |
|
|
|
|
|
|
|
для: DDK
(19.02.2007 в 00:24)
| | Нужно :
while (!feof(fin))
; ) | |
|
|
|