Sscanf(text, "%s %s", name, company);
parses 'ian mceknis'
aber es parsen auch 'ian mceknis'
und so weiter. Wie kann ich das machen, dass nur der erste geparst wird? Es darf nur ein Leerzeichen enthalten, nicht mehr.
Danke.
Sscanf(text, "%s %s", name, company);
parses 'ian mceknis'
aber es parsen auch 'ian mceknis'
und so weiter. Wie kann ich das machen, dass nur der erste geparst wird? Es darf nur ein Leerzeichen enthalten, nicht mehr.
Danke.
Wenn Sie möchten, dass es das letztere Beispiel ablehnt, müssen Sie Ihre eigene Funktion erstellen, um mehrere Leerzeichen zu finden/ablehnen.
Aber ich vermute, dass Sie eigentlich die zusätzlichen Leerzeichen entfernen wollen. Siehe: Wie entferne ich führende/trailing Leerzeichen auf eine standardisierte Weise?
Sie können dies nicht nur mit sscanf()
tun, da dies über recht grundlegende Funktionalitäten verfügt. Wenn Sie dies wirklich durchsetzen müssen (müssen Sie das?), sind möglicherweise reguläre Ausdrücke hier besser geeignet.
Es ist nicht das sauberste, aber so habe ich es für ein Projekt gemacht. Grundsätzlich nimmt es anstelle eines Leerzeichens im formatierten String bis zu zwei Leerzeichen ein (du kannst es auch so ändern, dass es auch mit Tabs oder ähnlichem umgehen kann). Wenn es nur ein Leerzeichen gibt, dann ist das zweite Zeichen immer noch null, und wenn es nicht null ist, dann wurde es überschrieben.
Also würde ich ändern:
sscanf(text, "%s %s", name, company);
zu:
char space[2] = "\0\0"
sscanf(text, "%s%2[ ]%s", name, space, company);
if(space[1] != '\0') {
//Es gab ein zusätzliches Leerzeichen, behandele es entsprechend
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.