---
title: "Splita en sträng"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/96677-splita-en-sträng"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "msossna"
published: "2004-02-05T22:56:41.000Z"
updated: "2004-02-06T12:35:03.000Z"
replies: 9
views: 416
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/96677-splita-en-sträng"
---

# Splita en sträng

## #1 — msossna, 2004-02-05T22:56Z

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?

Permalänk: https://www.webforum.nu/p/96677

## #2 — SPiN, 2004-02-05T23:02Z

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, "," );
}
...
```

Permalänk: https://www.webforum.nu/p/1269865

## #3 — msossna, 2004-02-05T23:09Z

Om jag nu vill ha in varje tal i en array?

Permalänk: https://www.webforum.nu/p/1269866

## #4 — SPiN, 2004-02-05T23:17Z

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.

Permalänk: https://www.webforum.nu/p/1269868

## #5 — spango, 2004-02-05T23:21Z

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 :)

Permalänk: https://www.webforum.nu/p/1269872

## #6 — msossna, 2004-02-05T23:24Z

Det stora problemet nu är att min sträng är av typen const char\*

Permalänk: https://www.webforum.nu/p/1269874

## #7 — SPiN, 2004-02-05T23:30Z

spango, bra att du har ögonen med dig! :D

msossna, förstår inte problemet? :q

Permalänk: https://www.webforum.nu/p/1269876

## #8 — msossna, 2004-02-05T23:32Z

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\*

Permalänk: https://www.webforum.nu/p/1269878

## #9 — PeW, 2004-02-05T23:55Z

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.

Permalänk: https://www.webforum.nu/p/1269883

## #10 — spango, 2004-02-06T12:35Z

Lalala. Ignorera.

Permalänk: https://www.webforum.nu/p/1270108

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/96677-splita-en-sträng
