Ik ben bezig met een simpel (
) id3v2 uitleesprog voor mijn mp3 bestanden, maar na een aantal regels code stuit ik al op dit vreemde fenomeen, waarbij er in een array van chars van 3 elementen, 7 characters passen
Ik heb de volgende code:
Volgens mij niks raars aan, hij compileerd zonder warnings/errors, maar als ik hem run, dan krijg ik de volgende output:

Ik heb gecontroleerd met ultraedit, en de eerste 3 bytes van het bestand zijn inderdaad "ID3".
Ik heb verschillende keren mijn code gecompileerd (met verschillende workspaces), verschillende mp3's geprobeerd, en toch houd ik deze error.
Als ik het aantal in elementen wijzig in 2 (char header[2] ) dan geeft ie ook 7 char's als output. Zet ik in plaats van een array van chars in de structure, 3 keer een "losse" variabele van een char (dus: char header1, char header2, char header3) dan staat er wel "ID3", maar dan verdeeld over 3 variabelen, en zo wil ik het niet doen!
Het is ook geen fout van 'cout', want als ik bij bovenstaande code
toevoeg, dan geeft hij aan dat de twee strings niet gelijk zijn...
Iemand een idee hoe dit komt
Ik heb de volgende code:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #include <iostream> #include <fstream> using namespace std; struct mp3tag{ char header[3]; }; int main() { ifstream mp3; mp3tag tag; mp3.open("test2.mp3", ios::binary); if( mp3.fail() ) { cout << "Mp3 bestand niet geopend!\n"; exit(1); } mp3.read( (char *) &tag, sizeof(mp3tag)); cout << tag.header << endl; return 0; } |
Volgens mij niks raars aan, hij compileerd zonder warnings/errors, maar als ik hem run, dan krijg ik de volgende output:
Ik heb gecontroleerd met ultraedit, en de eerste 3 bytes van het bestand zijn inderdaad "ID3".
Ik heb verschillende keren mijn code gecompileerd (met verschillende workspaces), verschillende mp3's geprobeerd, en toch houd ik deze error.
Als ik het aantal in elementen wijzig in 2 (char header[2] ) dan geeft ie ook 7 char's als output. Zet ik in plaats van een array van chars in de structure, 3 keer een "losse" variabele van een char (dus: char header1, char header2, char header3) dan staat er wel "ID3", maar dan verdeeld over 3 variabelen, en zo wil ik het niet doen!
Het is ook geen fout van 'cout', want als ik bij bovenstaande code
C++:
1
| strcmp(tag.header, "ID3") |
toevoeg, dan geeft hij aan dat de twee strings niet gelijk zijn...
Iemand een idee hoe dit komt
[ Voor 5% gewijzigd door Rockster op 25-11-2002 21:36 . Reden: typo ]
Mitsu PUHZ-SHW112YAA + ERSC-VM2C