Я пытаюсь токенизировать строку, взятую из файла.strtok_r корректно работает с первой подстрокой и возвращает ноль (и ошибка сегментации, потому что я пытаюсь войти в другой var)
char buffer[500];
char * c;
char * c1;
char * c2;
//....
while(fgets(buffer, sizeof(buffer), f) != NULL){
c2 = buffer;
printf("%s\n", buffer);
c = strtok(c2, ":");
for(int i = 0; i < 4; i++){
c = strtok(NULL, ":");
printf("%s\n", c);
}
if(strcmp(c, argp->origen) == 0){
c = strtok(NULL, ":");
printf("%s\n", c);
if(strcmp(c, argp->destino) == 0){
nodo = malloc(sizeof(lista_vuelo));
c2 = buffer;
c = strtok_r(c2, ":", &c1);
nodo->IdReg = atoi(c);
printf("\n%d test\n", nodo->IdReg); //Works until here
c = strtok_r(NULL, ":", &c1);
printf("\n%s\n", c); //Prints null and then segmentation fault
nodo->Idvuelo = strndup(c, strlen(c));
printf("\n%s\n", nodo->Idvuelo);
//....
Ввод из файла:
3: IBE3674: 02-04-2019: 19-45: Мадрид: Берлин: Барахас: Тегель: ИБЕРИЯ: 210: 35: 6: T4: 60: N
Выход:
3 тест -> ожидаемый результат
(null)
Violación de segmento (`core' generado) -> Segmentation fault, (null) should be IBE3674