Ce code a au moins un bug sur chaque ligne affichée.
FILE *nova;
Il est plus facile de l'erreur de manipulation à droite si vous faites ce genre de chose avec open
, write
et lseek
plutôt que fopen
, fwrite
et fseek
.
nova=fopen ("nova.wav", "wb");
La deuxième chaîne doit être "r+b"
au lieu de "wb"
de sorte que vous ne tronque pas le fichier. Vous devez vérifier les erreurs.
fseek (nova, 4, SEEK_SET);
Vous devez vérifier les erreurs.
fwrite (&brojacC,4,1,nova);
fwrite
doit toujours être appelé avec le deuxième argument 1 et troisième argument égal à la taille des données à écrire; sinon, il est impossible de récupérer des écritures courtes. Vous devez vérifier les écritures courtes et écrire des erreurs.
Vous ne montrez pas le code qui initialise brojacC
donc je ne peux pas évaluer si vous avez des problèmes d'endianness ou de rembourrage de structure, mais je parie que oui.
fseek (zvuk, 44, SEEK_SET);
Celui-ci fonctionne sur la poignée de fichiers sans rapport avec zvuk
plutôt que nova
. Et vous devez vérifier les erreurs.
fwrite (&brojacCS2,4,1,nova);
Depuis l'appel fseek
sur la ligne précédente a été appliquée à zvuk
, ce écrit à l'offset 4 + 4 = 8, pas compensé 44 comme il était prévu.Tous les commentaires sur la ligne fwrite
précédente s'appliquent également à cette ligne. (Psst: Vous devez vérifier les erreurs.)
Un espacement incohérent autour des virgules, en passant, invite les dieux à vous frapper avec la foudre. Il en va de même pour mettre des espaces à l'intérieur de vos parenthèses.