Распарсить строку и записать значения в структуру - C (СИ)
Формулировка задачи:
Всем привет, не могу сделать следующие: нужно распарсить определенную строку, на определенные части, затем эти части записать в структуру
вот начал делать, изначально начало все получаться, но вот на втором этапе получается так, что я не понимаю из-за чего так выходит..
именно вот на этом месте
объясню мой алгоритм, какой у меня в голове и как я хотел распарсить
имеем данную строку
сперва разбиваем на блоки до точки с запятой (";")
далее этот "блок" бьем еще раз на части, внутренним циклом, делителем является двоеточие (":")
затем нужные значения конвертируем в числа, некоторые оставляем строкой
но почему-то только парсится первый блок, остального как будто нету - я не понимаю почему ! если допустим уберем "defin" результатом я получу А и 75, вроде правильно все бьет, но только первое
вот весь код, ну пока только начало.. иначе это самое главное в этой программе, так просто выложу чтобы имелось представление о переменных
результатом должно получиться 4 значения
значение которое выделено как defin и 3 последующих числа, чтобы это все можно было записать в структуру
defin это может быть любое название, строкового типа
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); // ну тут я просто пытался вывести содержимое вообще... // тут далее все конвертации и запись в структуру.... } }
#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"); }
Решение задачи: «Распарсить строку и записать значения в структуру»
textual
Листинг программы
//string "1,2,3,4" // valX - int sscanf(string,"%[^,],%[^,],%[^,],%[^,]", &val1, &val2, &val3, &val4);