begin process at 2012 05 29 08:26:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

Erreur à la lecture


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur à la lecture

dimanche 7 mars 2010 à 18:39:45 | Erreur à la lecture

deadbird

hello ;)
J'ai ici une fonction qui ouvre un fichier WAV, et le fread ne fonctionne pas, impossible de comprendre pourquoi...quelqu'un a une idée?
Code C/C++ :
int openWaveFile(char* file) {
	unsigned long size;
	errCode = 0;

	/*Does the file has the .wav extension?*/
	if (!strstr(file, ".wav"))
		ERR(1);
	
	/*open file for reading*/
	if ((fp = fopen(file, "r")) == NULL)
		ERR(2);

	/*get size*/
	fseek(fp, 0, SEEK_END);
	size = ftell(fp);
	fseek(fp, 0, SEEK_SET);

	/*allocates the whole buffer*/
	if(!(buffer = (unsigned char*)malloc(size * sizeof(unsigned char))))
		ERR(5);

	/*read the whole file and close it*/
	if (fread((void*)&buffer, sizeof(unsigned char), size, fp) != size)
		ERR(3);
	fclose(fp);

	/*header's at the very beginning*/
	header = (struct WAV_HEADER *)buffer;

	/*Then check it!*/
	if (header->declare.riffTag[0] != 'R' ||
		header->declare.riffTag[1] != 'I' ||
		header->declare.riffTag[2] != 'F' ||
		header->declare.riffTag[3] != 'F') ERR(4);
	if (header->declare.waveTag[0] != 'W' ||
		header->declare.waveTag[1] != 'A' ||
		header->declare.waveTag[2] != 'V' ||
		header->declare.waveTag[3] != 'E') ERR(4);
	if (header->header.formatBlockID[0] != 'f' ||
		header->header.formatBlockID[1] != 'm' ||
		header->header.formatBlockID[2] != 't') ERR(4);

	data_pos.buffer = buffer;
	data_pos.bufferSize = size;
	data_pos.bytesPerSample = header->header.bytesPerSample;

end:
	if (fp) fclose(fp);
	return errCode;
}

dimanche 7 mars 2010 à 19:16:16 | Re : Erreur à la lecture

deadbird

oups:
fread((void*)buffer, sizeof...

mais ca ne change rien à mon problème :(
lundi 8 mars 2010 à 12:35:46 | Re : Erreur à la lecture

TychoBrahe

Salut,

Pour commencer, comment est-ce que ça se fait que la plupart des variables utilisées ne soient pas déclarées ? Rien que pour ça je ne vois même pas pourquoi ça devrai compiler. Quand aux multiples casts, c'est moche, ça sert à rien et c'est sujet à dissimulation de bugs (ou bien peut-être utilises-tu en réalité un compilateur C++).

Sinon, vu que buffer semble être un unsigned char* alors il faut faire comme dans ton second post (mais sans le cast de préférence).

Soit dit en passant, fclose() ne met pas le pointeur sur le flux à NULL, donc ton "if (fp)" sera toujours vrai et ton close doit s'effectuer 2 fois si aucune erreur ne se produit.


Cette discussion est classée dans : header, declare, size, fp, if


Répondre à ce message

Sujets en rapport avec ce message

[code c++] hediteur hexa [ par devoX ] bonjours a tous,je suis debutant en c++ et je cherche a realiser un editeur hexadecimal sous Vc++J'ai deja commencer a ecririr une petite partie du co Erreur de compilation [ par anouar27 ] Bjr,Je fais de la programmation sur la Personnalisation d'un logiciel Pro/Engineer pour des clients.J'ai eu un prblm de compilation, ça retourne les e Traduction C [ par etudtelec ] Salut tous le monde, Je ne développe pas avec le langage C, je fais comme étude Réseaux Mais je viens devant une situation de réseaux et veux comprend Comment peut on utiliser? [ par djibidl ] Bonsoir, Je suis un débutant en C et disons que c'est un langage qui me passionne et j'aimerai savoir certaines choses le concernant: 1_) Est ce qu'on objet persistant [ par dalimrabet ] [b][i][size=100]salut tout le monde :) je suis débutant dans le domaine de programmation , et il nous a été demandé dans la classe de créer des objets algorithme de huffman( compression) [ par flamme19 ] sa[size=200]lut, je cherche un programme en c++ qui fait la compression, puis la décompression d'un texte donné en utilisant l'algorithme de huffman.. probleme readfile sur port serie en overlapped [ par looloo78 ] Bonjour, je me permets de poster ce post concernant un programme pour lire sur le port COM1 ou 2. mais ca ne fonctionne pas, il se met automatiquemen [Jeu] Problème dans mon code [ par Baltronard ] Bonjour à toutes et à tous. Voila j'ai quelques petits soucis avec mon code en C (pas c++) pour la création d'un puissance 4. Il se trouve que ma fo Aidez moi svp [ par debutante01 ] bonjour,j'ai un tp à faire en langage C mé je suis debutante dans cet domaine donc pouvez vs m'aidé svp voici l'enoncé de tp: soit un fichier binaire comparer deux string [ par roubalist21 ] voici le code: [code=cpp]for(i=0;i<maxDF;i++) { for(j=1;j<(maxS+1);j++) { if(tabDF[i][j]!=NULL) { for(k=0;k<=fins;k++) { if(ta


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales