Ich habe viele Funktionen, die eine Zeichenfolge als Argument erwarten, für die ich char*
verwenden, aber alle meine Funktionen, die ein Byte-Array erwarten, verwenden Sie auch char*
.Unterscheiden zwischen String und Byte-Array?
Das Problem ist, dass ich leicht den Fehler machen kann, ein Byte-Array in einer String-Funktion zu übergeben, die alle Arten von Überläufen verursacht, weil der Null-Terminator nicht gefunden werden kann.
Wie ist das normalerweise delt? Ich kann mir vorstellen, alle meine Byte-Array-Funktionen zu ändern, um eine uint8_t
zu nehmen, und dann wird der Compiler vor signed -ness warnen, wenn ich eine Zeichenfolge übergebe. Oder was ist der richtige Ansatz hier?
Erstellen Sie einen Wrapper für ein Byte-Array? –
@VaughanHilts Ich sehe nicht, wie das mein Problem löst? – Muis
Ein String * ist * ein Byte-Array. Da Sie keine Arrays in C übergeben können, sondern nur einen Zeiger auf das erste Element, müssen Sie normalerweise auch eine Größe übergeben. Überprüfen Sie einfach, ob das Array einen Nullwert enthält. Wenn dies der Fall ist, handelt es sich um eine "Zeichenfolge". Ansonsten ist es nicht. –