Entree/sortie en C sous Windows
Résolu/Fermé
A voir également:
- Entree/sortie en C sous Windows
- Clé windows 10 gratuit - Guide
- Montage video windows - Guide
- Windows ne démarre pas - Guide
- Windows 10 gratuit - Accueil - Mise à jour
- Windows movie maker windows 11 - Télécharger - Montage & Édition
7 réponses
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
21 juin 2004 à 13:05
21 juin 2004 à 13:05
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é ?
Canard007
Messages postés
5929
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
215
21 juin 2004 à 14:32
21 juin 2004 à 14:32
on pourrai voir le code de ta fonction?
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...
Canard007
Messages postés
5929
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
215
22 juin 2004 à 12:12
22 juin 2004 à 12:12
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 ?!!
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
22 juin 2004 à 15:41
22 juin 2004 à 15:41
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!!!
Canard007
Messages postés
5929
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
215
22 juin 2004 à 14:15
22 juin 2004 à 14:15
Cela vient peut etre de la façon dont tu fait ta dll...
mais la je ne pourrai t aider je ne sait faire que des dll zarb...( pour java :p)
mais la je ne pourrai t aider je ne sait faire que des dll zarb...( pour java :p)