Permalänk

C/C++, dela upp en sträng

Jag har en char[] som har följande format "Namn=Signatur". Jag använder strtok() för att hämta namnet:

name = strtok(buf,"=");

Problemet är nu att jag vill ha det som är kvar av strängen, alltså signaturen, i en annan char[]. Hur gör jag?

Visa signatur

System.out.print(madness ? this.is.SPARTA : "");

Permalänk
Medlem

Kör strtok(NULL, " ") om jag minns skiten rätt. Eller så kan du ju bara göra något fult i stil med buf+strlen(name)+1.

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem

Borde inte sscanf funka?

typ:

sscanf(buf,"%s=%s", name, signature);

Lite lurigt med osäkra längder på %s kanske.

Permalänk
Medlem

Kör strtok(NULL, "=")

Visa signatur

flippy @ Quakenet

Permalänk
Citat:

Ursprungligen inskrivet av ante84
Kör strtok(NULL, "=")

Det verkar fungera ganska bra, men...

Jag har en textfil med en massa sådana rader, som beskrivna ovan, och försöker nu läsa in första raden för att testa. Koden ser ut som nedan:

c = fgetc(pFile); while (c != '\n') { buf[pos++] = c; c = fgetc(pFile); } defs[0].name = strtok(buf,"="); defs[0].sig = strtok(NULL, " ");

Om jag nu skriver ut defs[0].name, så får jag förstås namnet. Men om jag däremot skriver ut defs[0].sig, så får jag allt i hela textfilen, alla rader.

Hur fungerar strtok(NULL," "); vad exakt gör den?

Edit: Ok, jag löste det, det verkar som att jag hade en för liten dimensionerad buffer, vilket resulterade i att den gav hela textfilen istället för en rad.

Visa signatur

System.out.print(madness ? this.is.SPARTA : "");