strtok одного символа
Я должен маркировать строку в следующем формате:
pippo:c:C2,C3,C4:pippo
Как я могу маркировать эту строку с помощью strtok (мне больше не нужна строка, как только я сделал маркировку). Я хочу, чтобы одинокий символ хранился в переменной char, а не в переменной char*.
2 ответа:
Если вы хотите только c в части :c:, и вы знаете, что вещи будут иметь этот формат, вам не нужно заходить так далеко, как токенизация. Вы можете просто сделать
char c = strchr(str, ':')[1];
Это находит первое :, и получает символ, следующий за ним. Конечно, strtok также будет работать:
Это позволяет получить второе маркированное Слово и получить первый символ этого слова. В общем, если вы хотите, чтобы все было дальше, вы, вероятно, захотите использовать цикл вместо этого. Не то, чтобы буфер str должен быть пишется в этом случае, в отличие от других.strtok(str, ":"); char c = strtok(NULL, ":")[0];
Наконец, если часть
pippo
всегда имеет одинаковую длину, вам может сойти с рук простоchar c = str[6];
Во всех случаях,
str = "pippo:c:C2,C3,C4:pippo"
.
Если вы хотите получить один символ между двумя токенами с помощью
strtok()
, Вы можете сделать это, проверив длину строки, которую вы извлекли.int main () { char str[] ="pippo:c:C2,C3,C4:pippo"; char * pch; char winner; pch = strtok (str,":"); while (pch != NULL) { if(strlen(pch) == 1){ // if there's only 1 char we got it winner = pch[0]; // if there's more than 1 single char of :x: format you break; // could check for that too here. } pch = strtok (NULL, ":"); } printf("And the winner is: %c\n", winner); return 0; }