Binärdatei auf bestimmte Zeichenfolge überprüfen
-
Hallo Leute
Ich frage mich grade, wie man eine Binärdatei auf eine bestimmte Zeichenfolge überprüfen kann
Also die ersten 5 zeichen sind beispieslweise: 59 41 53 56 47 Also YASVG. Ich habe die Binärdatei mit fread() eingelesen und möchte nn überprüfen ob die ersten 5 Zeichen genau den obrigen entsprechen.
Könnt ihr mir da vllt helfen?
mfg Gerald
-
Hi,
mit strncmp sollte das funzen, wenn die Anzahl der Zeichen >= strlen("YASVG") ist.
-
^^oder mit memcmp, oder (bei 5 zeichen vielleicht gerade noch erträglich):
if (p[0] == 'Y' && p[1] == 'A' && p[2] == 'S' && p[3] == 'V' && p[4] == 'G') { ... }
-
Ich frage mich ob diese Variante hier wesentlich anders als die von fricky; ist:
if (*((int*)p)==*((int*)"YASV")&&p[4]=='G')...
Sieht irgendwie fies gehackt aus und klappt natürlich nur bei 32Bit ints, wenn überhaupt.
Weiß jemand ob das was bringt?
-
nwp2 schrieb:
Weiß jemand ob das was bringt?
eher nicht, weils erstens endian-abhängig ist (ausser du machst noch mit 'htonl' rum *fg*) und zweitens, int-zugriffe auf irgendwelche adressen, die kein vielfaches von sizeof(int) sind, quittieren manche CPUs oder betriebssysteme mit bus-errors, access violation exceptions, u.ä.
-
du solltest deinen buffer durchschleifen. immer zeichen für zeichen vergleichen obs identisch sind. also einen kleinen such algorythmus ausdenken.
-
punky schrieb:
such algorythmus
-
punky schrieb:
also einen kleinen such algorythmus ausdenken.
naja, memcmp eben. das gibts ja schon.