Entree/sortie en C sous Windows
Résolu
Alex SwartzKaiser
-
Nicolas -
Nicolas -
A voir également:
- Entree/sortie en C sous Windows
- Clé windows 8 - Guide
- Montage video windows - Guide
- Windows ne démarre pas - Guide
- Windows movie maker - Télécharger - Montage & Édition
- Restauration systeme windows 10 - Guide
7 réponses
comment a été ouvert le fichier ? (lecture, ecriture, append, texte, binaire ?)
est-ce qu'on peut voir le code concerné ?
est-ce qu'on peut voir le code concerné ?
Ok...
Voila le programme de test
Ici, perror ne signale aucune erreur.
FileAudioInput_create(file) est une fonction de ma librairie, donc qui est dans ma DLL
Ici perror me dit "Bad file descriptor" !!!? Pourtant, le descripteur de fichier est bien le meme dans cette fonction et dans le programme de test... Comme un simple appel de fonction peut modifier un descripteur ??? Le pointeur FILE* est bien le meme, on dirait donc que ce n''est pas un probleme de convention d''appels...
Voila le programme de test
#include <stdio.h> #include <stdlib.h> #include "lydie.h" static char* usage_str = "AudioInputTest <filename>\n"; int main(int argc, char** argv) { FILE* file; AudioInput input; AudioFormat format; /* Command line checking */ if (argc != 2) { printf("%s\n", usage_str); return EXIT_FAILURE; } /* Open the file */ file = fopen(argv[1], "rb"); if (file == NULL) { printf("Unable to open the file %s\n", argv[1]); return EXIT_FAILURE; } /* Test for a strange bug */ /* No errors detected... */ rewind(file); printf("main descripteur fichier = %u\n", file); perror("main "); /* Build the AudioInput from the file */ input = FileAudioInput_create(file); /* Printing information about the file */ printf("%s\n", argv[1]); format = AudioInput_getAudioFormat(input); if (format == NULL) { printf("Unsupported sound file format\n"); return EXIT_FAILURE; } printf("\t- nb channels = %u\n", AudioFormat_nbChannels(format)); printf("\t- big endian = %u\n", AudioFormat_isBigEndian(format)); printf("\t- bits per sample = %u\n", AudioFormat_bitsPerSample(format)); printf("\t- samples per second = %u\n", AudioFormat_samplesPerSecond(format)); /* Job done */ AudioInput_destroy(input); fclose(file); return EXIT_SUCCESS; }
Ici, perror ne signale aucune erreur.
FileAudioInput_create(file) est une fonction de ma librairie, donc qui est dans ma DLL
AudioInput FileAudioInput_create(FILE* f) rewind(f); printf("FileAudioInput_create descripteur fichier = %u\n", f); perror("FileAudioInput_create ");
Ici perror me dit "Bad file descriptor" !!!? Pourtant, le descripteur de fichier est bien le meme dans cette fonction et dans le programme de test... Comme un simple appel de fonction peut modifier un descripteur ??? Le pointeur FILE* est bien le meme, on dirait donc que ce n''est pas un probleme de convention d''appels...
Salut,
Bon apres rapide evaluation de ton code le passage d'argument est tout à fait corect donc cela ne vient pas de la c est sure...
c'est kle code complet de FileAudioInput_create que tu as donné?
c est etrange cette histoire..
tu as essayé au debugger il rentre bien dans la fonction?
tu ne fait a aucun moment de modification du fichier?
Bon apres rapide evaluation de ton code le passage d'argument est tout à fait corect donc cela ne vient pas de la c est sure...
c'est kle code complet de FileAudioInput_create que tu as donné?
c est etrange cette histoire..
tu as essayé au debugger il rentre bien dans la fonction?
tu ne fait a aucun moment de modification du fichier?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hum non mais le reste est sans importance vut que ca plante au debut... Mais quand je fait une librairie statique (.lib) au lieu d''une librairie dynamique (.dll) ca marche sans probleme ?!!
mais Alex, pourqoi ces rewind ??? t'en as pas besoin en plus, l'ouverture en lecture le place au début. Je pense que l'erreur, provient d'autre part.
Et puis, il est conseillé de mettre errno à 0 avant d'appeler perror, car il n'est pas mis automatiqement a 0 aprés usage.
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
Et puis, il est conseillé de mettre errno à 0 avant d'appeler perror, car il n'est pas mis automatiqement a 0 aprés usage.
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!