Ich habe ein seltsames Verhalten, das ich nicht verstehen kann ... beide Teile des Codes stammen aus dem gleichen Programm ... Ich bin nur den einen oder anderen kommentieren ... Ich konvertiere ein mAC-Adresse in einen String in einem Byte-Array geschrieben ... hier ist der Code, der funktioniert:Segmentierung Fehler für Schleife
unsigned char ssidHex[6];
ssidHex[0] = hexToByte(mac[0], mac[1]);
ssidHex[1] = hexToByte(mac[2], mac[3]);
ssidHex[2] = hexToByte(mac[4], mac[5]);
ssidHex[3] = hexToByte(mac[6], mac[7]);
ssidHex[4] = hexToByte(mac[8], mac[9]);
ssidHex[5] = hexToByte(mac[10], mac[11]);
Und hier ist der Code, die Segfaults:
unsigned char ssidHex[6];
for (int y = 0; y < 6; y++)
ssidHex[y] = hexToByte(mac[y * 2], mac[y * 2 + 1]);
Wie man sehen kann ich nicht nach draußen zu gehen Grenzen ... kannst du mir bitte erklären, was falsch ist?
Vielen Dank
UPDATE:
Der vollständige Code ziemlich groß ist, sowieso "mac" kommt aus dem Aufruf des Verfahrens:
void compute(char *mac)
und kommt vom Befehlszeile, es ist eine MAC-Adresse ohne die doppelten Punkte, wie "DEADDEADDEAD" und hier ist die Definition von hexToByte:
Bitte zeigen Sie ein komplettes, kompilierbares Beispiel an. Dass der erste Codeblock ausgeführt wird, bedeutet nicht unbedingt, dass er korrekt ist. –
Die beiden Codes sind gleichwertig. Vielleicht irgendwo ein undefiniertes Verhalten? –
Können Sie vollständigen Code eingeben? – dazzieta