Распарсить строку и записать значения в структуру - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет, не могу сделать следующие: нужно распарсить определенную строку, на определенные части, затем эти части записать в структуру вот начал делать, изначально начало все получаться, но вот на втором этапе получается так, что я не понимаю из-за чего так выходит.. именно вот на этом месте
    for(token = strtok(buffer, ";"); token != NULL; token = strtok(NULL, ";")) // тут мы получаем блок до ";"
    {
        printf("%s\n", token);  
        for(token2 = strtok(token, ":"); token2 != NULL; token2 = strtok(NULL, ":")) // тут же по идеи должен разбиваться полученный блок, но уже по другому правилу как в верхнем цикле
        {
            printf("%s\n", token2); // ну тут я просто пытался вывести содержимое вообще...
            // тут далее все конвертации и запись в структуру....
        }
    }
объясню мой алгоритм, какой у меня в голове и как я хотел распарсить имеем данную строку сперва разбиваем на блоки до точки с запятой (";") далее этот "блок" бьем еще раз на части, внутренним циклом, делителем является двоеточие (":") затем нужные значения конвертируем в числа, некоторые оставляем строкой но почему-то только парсится первый блок, остального как будто нету - я не понимаю почему ! если допустим уберем "defin" результатом я получу А и 75, вроде правильно все бьет, но только первое вот весь код, ну пока только начало.. иначе это самое главное в этой программе, так просто выложу чтобы имелось представление о переменных
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct wert
{
    int x, y, z;
    char *st;
};
 
int main()
{
    char buffer[50] = "defin;A:75;B:10;C:0";
    char *token = NULL; 
    char *token2 = NULL;
 
    struct wert la; 

    printf("%s\n\n", buffer);
 
    for(token = strtok(buffer, ";"); token != NULL; token = strtok(NULL, ";"))
    {
        printf("%s\n", token);  
        for(token2 = strtok(token, ":"); token2 != NULL; token2 = strtok(NULL, ":"))
        {
            printf("%s\n", token2); 
            // тут далее все конвертации и запись в структуру....
        }
    }
 
    printf("\n");
    system("pause");
}
результатом должно получиться 4 значения значение которое выделено как defin и 3 последующих числа, чтобы это все можно было записать в структуру defin это может быть любое название, строкового типа

Решение задачи: «Распарсить строку и записать значения в структуру»

textual
Листинг программы
//string "1,2,3,4"
// valX - int
sscanf(string,"%[^,],%[^,],%[^,],%[^,]", &val1, &val2, &val3, &val4);

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы