J'utilise MinGW dans Windows 8.1 et j'ai un fichier texte d'entrée de nombres bruts (un par ligne) et je veux les écrire comme binaire dans un nouveau fichier binaire. L'exemple compile sans problème avec:fread ou fwrite donne "numéro de fichier incorrect"
gcc -pedantic -Os -c my_code.c -o my_code.exe
mais la sortie est
$ my_code.exe
sh: ./my_code.exe: Bad file number
Voici le code que j'ai écrit:
#include<stdio.h>
int main()
{
FILE *fp;
FILE *prob;
int length;
char buffer[30];
// Open file containing numbers
if ((prob = fopen("raw_numbers.txt","r")) == NULL)
{
printf("Could not open raw_numbers.txt\n");
exit(1);
}
/* Create output binary file */
fp = fopen("file.bin" , "w");
while(! feof(prob))
{
fgets(buffer, sizeof(buffer), prob);
fwrite((const void*) & buffer, 1, sizeof(buffer), fp);
}
fclose(prob);
fclose(fp);
return(0);
}
En utilisant
$ gcc --version
gcc (GCC) 3.4.4 (msys special)
Je pense que vous êtes censé passer 'buffer', au lieu de' & buffer' à fwrite. – squirem
Toujours le numéro de fichier Bad persiste sans le & – Veronica
Vous devez vérifier si le fichier 'file.bin' a été réellement ouvert. – DaBler