Разделить строку на # в C - PullRequest
       1

Разделить строку на # в C

0 голосов
/ 28 декабря 2010

У меня есть такая строка:

char *message = "12#34#56#78#90"

Я хочу получить:

a = "12"
b = "34"
c = "56"
d = "78"
d = "90"

Кто может дать мне хороший метод?

Ответы [ 4 ]

8 голосов
/ 28 декабря 2010

Использование strtok().Обратите внимание, что, хотя это документация C ++, функция также присутствует в C. Обратите особое внимание на использование NULL в последующих вызовах для получения следующего токена.

char label = 'a';
char *token = strtok(message, "#");
while (token != NULL) {
  printf("%c = \"%s\"\n", label++, token);
  token = strtok(NULL, "#");
}

Выходы:

a = "12"
b = "34"
c = "56"
d = "78"
e = "90"

См. http://ideone.com/xk1uO

2 голосов
/ 28 декабря 2010

Функция strtok в стандартной библиотеке делает это, вы можете перебрать строку, извлекая все токены.

1 голос
/ 02 января 2011

Давайте использовать strsep - нет необходимости зависеть от статической переменной, передавая NULL.

char *string; // It holds "12#34#56"; (cannot be string literal)
char *token = NULL;

while ((token = strsep(&string, "#"))) {
   printf("%s\n", token);
}
1 голос
/ 28 декабря 2010

strtok_r это как strtok, но безопаснее.strtok устарела.

...