EDITPourquoi ai-je un ferror sur mon fichier source en utilisant zlib deflate?
// open output file for writing
if ((outfilefd = fopen(file_name, "w+t")) == NULL)
{
fprintf(stderr, "Unable to create file\n");
exit(1);
}
écrire dans le fichier, alors besoin zipper.
ouverture d'un fichier .z, puis en appelant def()
FILE *zipFile;
if ((zipFile = fopen("C:\\LOGS\\test.txt.z", "w+t")) == NULL)
{
fprintf(stderr, "Unable to create file\n");
exit(1);
}
int ret = def(outfilefd, zipFile, Z_DEFAULT_COMPRESSION);
if (ret != Z_OK)
printf("ZLIB Error");
utilisant def(), dès le site:
int def(FILE *source, FILE *dest, int level)
{
int ret, flush;
unsigned have;
z_stream strm;
unsigned char in[CHUNK];
unsigned char out[CHUNK];
/* allocate deflate state */
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
strm.opaque = Z_NULL;
ret = deflateInit(&strm, level);
if (ret != Z_OK)
return ret;
/* compress until end of file */
do {
strm.avail_in = fread(in, 1, CHUNK, source);
int g = ferror(source);//<---------------- EROR HERE returning 32?
if (ferror(source)) {
(void)deflateEnd(&strm);
return Z_ERRNO;
}
zipFile
est non nulle, strm.avail_in
= 16343, in
a les données mais ferror(source)
renvoie 32?
EDIT - Aussi strm.avail_in
= 16343 a attiré mon attention comme CHUNK
= 16384 .... est-ce OK?
Toutes les idées ou l'aide est appréciée.
Merci.
Je ne sais pas ce que 32 est. Essayez [perror] (http://www.opengroup.org/onlinepubs/000095399/functions/perror.html) pour imprimer le texte d'erreur. –
Quelle est la signification de errno 32 sur votre plate-forme, pourriez-vous perror ("") il? Sur linux, il est écrit "broken pipe", ce qui semble étrange vu que vous avez ouvert un fichier. – mvds
peut-être juste montrer comment vous ouvrez la source, c'est votre problème alors pourquoi devrions-nous supposer ou deviner? – mvds