Стрток возвращается (ноль) после первого жетона - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь отделить строку, прочитанную из файла, токеном #.StrTok правильно разделяет первый токен, но когда я печатаю то, что должно быть вторым токеном, он не возвращает ничего, кроме (null).

Я попытался изменить формат файла, который читается, и используя переменную auxдля хранения содержимого strtok (NULL, "#"), но результаты не меняются.

void ler_fich_cidades(Lista_Cidades cidade,Lista_Pontos pt){

    FILE *p;
    int file_check=0;
    char linha[TAM];
    Lista_Pontos ptos;
    Cada_cidade city;
    char *aux = (char*)malloc(TAM*sizeof(char));
    p = fopen("locais.txt", "r");


    while(!feof(p)){
        fgetstr(linha,sizeof(linha),p); //this function removes any '\n'.It is working,because it is used for other things

        strcpy(cidade->nome_cidade,strtok(linha,"#")); //This line is working as intended
        printf("%s\n",cidade->nome_cidade);
        strcpy(ptos->ponto.nome,strtok(NULL,"#")); //This one is not


        printf("%s\n",ptos->ponto.nome); //Printing (null)
    }
}

Считываемый файл имеет следующий формат:

"# Coimbra"
"#Universidade De Coimbra # Ema das universidades mais antigas do mund ainda em operaçao, sendoa mais antiga e uma das maiores do pais. # 8: 00h-18: 00h # Сегунда, Терка, Кварта, Кинта, Секстта, Сабадо "

Выходные данные должны быть: Коимбра Universidade De Coimbra

Но фактический результат просто: Коимбра

1 Ответ

0 голосов
/ 18 мая 2019

Проблема не в том, что strtok возвращает NULL.Проблема в том, что вы никогда не инициализируете ptos, поэтому он указывает на неопределенность.

Кроме того, ваша функция, кажется, принимает аргумент pt, но вы никогда не используете его.

...