Typ:
#include <string.h>
...
char MinaInts[] = "12,23,24";
char* Tokens;
Tokens = strtok( MinaInts, "," );
while( Tokens != NULL ) {
printf( "Int: %s\n", Tokens );
Tokens = strtok( NULL, "," );
}
...
9 svar · 388 visningar · startad av msossna
Jag har en sträng som ser ut: int,int,int, (ex 12,23,24,). Nuvill jag dela denna så att talen hamnar för sig. Någon som har ett bra sätt att göra detta?
Typ:
#include <string.h>
...
char MinaInts[] = "12,23,24";
char* Tokens;
Tokens = strtok( MinaInts, "," );
while( Tokens != NULL ) {
printf( "Int: %s\n", Tokens );
Tokens = strtok( NULL, "," );
}
...
Om jag nu vill ha in varje tal i en array?
Hmm... Kanske skulle följande kunna fungera:
#include <string.h>
#include <stdlib.h>
...
char MinaInts[] = "12,23,24";
char* Tokens;
int numbers[3];
int counter = 0;
Tokens = strtok( MinaInts, "," );
while( Tokens != NULL ) {
numbers[ counter++ ] = atoi( Tokens );
Tokens = strtok( NULL, "," );
}
...
Viktigt nu att du alltid endast har 3 stycken integers i din sträng, samt att du endast har två stycken komman som separerar siffrorna mellan. Inga blanksteg eller övriga tecken förutom 0-9 kommer att fungera för dig.
Du har glömmit en liten kodsnutt där, SPiN...
Tokens = strtok( MinaInts, "," );
while( Tokens != NULL ) {
numbers[ counter++ ] = atoi( Tokens );
[i]Tokens = strtok(NULL, ",");[/i]
}
blir en liten fin evighetsloop annars :)
Det stora problemet nu är att min sträng är av typen const char*
strtok måste ta en char* som första argument, men mina ints ligger i en const char*, således måse jag konvertera const char* till char*
Det som är const char är "12,23,24", så det är inte så konstigt om du får felmeddelande. Ge arrayen en fast storlek och tilldela genom strcpy(MinaInts,"...") så blir det säkert annorlunda.
char MinaInts[255];
strcpy(MinaInts,"12,23,24");
Alternativt deklarera MinaInts som en pekare och allokera minnet dynamiskt.
Lalala. Ignorera.