Avatar billede kjole Nybegynder
08. marts 2006 - 16:40 Der er 13 kommentarer og
1 løsning

Finde "abcd" i et unsigned char array

Jeg har et unsigned char array som jeg gerne vil søge igennem for at finde 4 chars(sammenhængende) "acbd".

Jeg har prøvet at convertere den til en string uden held. Hvordan gøres det?
Avatar billede kjole Nybegynder
08. marts 2006 - 17:30 #1
Anyone?
Avatar billede arne_v Ekspert
08. marts 2006 - 18:04 #2
strstr
Avatar billede arne_v Ekspert
08. marts 2006 - 18:05 #3
char *s = "bla bla abcd bla bla";
char *p = strstr(s,"abcd");

p vil pege paa det sted i s hvor abcd er (vil vaere NULL hvis ikke den er der)

du kan selv klistre nogle unsigned paa de char arrays
Avatar billede kjole Nybegynder
08. marts 2006 - 18:28 #4
p indeholder resten af s.. altså "abcd bla bla" ud fra det kan jeg jo ikke finde hvr bcd starter?
Avatar billede kjole Nybegynder
08. marts 2006 - 18:35 #5
Når man laver arraysne til unsigned, kommer der fejl
Avatar billede kjole Nybegynder
08. marts 2006 - 18:58 #6
Hvis "abcd" står i starten af filen finder den den.. men ikke hvis den først bliver indlæst.. så udskrives der kun <null> hver gang selvom det er i arrayet

char header[100] = {0};
int i = 0;
while ( 1 )    
{
fread( &buffer, 1, 1, wavFile );
wavHeader[i] = buffer[0];
printf("%s",strstr(wavHeader,"WAVE"));
i++;
}
Avatar billede arne_v Ekspert
08. marts 2006 - 19:20 #7
hvis p er "abcd bla bla" saa maa bcd jo starte i p+1
Avatar billede arne_v Ekspert
08. marts 2006 - 19:25 #8
koden ser meget mystisk ud

hvorfor kalder du ikke fread 1 gang og laeser det hele ind i wavHeader ?

strstr virker med nul terminerede strenge ! er WAVE headere printbare ????
Avatar billede kjole Nybegynder
08. marts 2006 - 19:25 #9
Okay, tak.
Kan du sige mig hvorfor den ikke finder det i det kode jeg har lagt op?
Avatar billede arne_v Ekspert
08. marts 2006 - 19:26 #10
hvis det er binaere data saa skal du nok bruge memcmp til at sammenligne med
Avatar billede kjole Nybegynder
08. marts 2006 - 19:26 #11
Det er forskelligt hvor langt headeren er på en wav fil.. så jeg skal læse indtil jeg finde forekomsten "data".. hvordan skal det gøreS?
Avatar billede arne_v Ekspert
08. marts 2006 - 19:30 #12
da du vel alligevel har en size paa buffer arrayet kan du vel ligesaa godt bruge:

fread(buffer,1,sizeof(buffer),wavFile);

uden en loekke
Avatar billede kjole Nybegynder
08. marts 2006 - 21:14 #13
Løste det på en anden og bedre måde, men du har fortjent pointene.. så lav et svar
Avatar billede arne_v Ekspert
08. marts 2006 - 21:40 #14
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester