Понятия не имею, как исправить ошибку - PullRequest
0 голосов
/ 04 июня 2019

Я использую fscanf для сканирования отформатированного файла .srt, однако столкнулся с проблемой, с которой не могу обойтись, так как я довольно новичок в C.

Я попытался прочитать файл char за символом, но в итоге получился огромный беспорядок, который я не смог отладить

if (input == NULL) 
    {
        printf("File doesn't exist, exiting!\n");
        exit(1);
    }
    printf("File opened!\n");

    int order; //number of line

    int csh; //hh
    int csm; //mm
    int css; //ss
    int csms; //ms

    int ceh; // same order as above
    int cem;
    int ces;
    int cems;

    char* text = calloc(256, sizeof(char));
    char c;

    int count = 0;
    while ((i = fscanf(input, "%d\n%d:%d:%d,%d --> %d:%d:%d,%d\n%10s", &order, &csh, &csm, &css, &csms, &ceh, &cem, &ces, &cems, text) > 0) )
    {
        count++;
        printf("%d\n%d:%d:%d,%d --> %d:%d:%d,%d\n%s",  order,  csh, csm, css,  csms,  ceh,  cem,  ces,  cems, text);

if (count == 2) 
        {
            int xyx;
            scanf_s("%d", &xyx);
        }




    }

Итак, я пытаюсь прочитать отформатированный файл и сохранить данные в двусвязном списке, и файл выглядит следующим образом

enter image description here

Etc. Файл огромный, целые субтитры Phantom Menace, я считаю, поэтому у меня две проблемы, мой код не читает весь текст, когда он заканчивается со временем, и, во-вторых, он не проходит счетчик 2, который я использовал просто для проверки программы.

Я получаю этот вывод enter image description here

1 Ответ

0 голосов
/ 04 июня 2019

Комментарий Матье дал мне подсказку, я решил свои проблемы с этим:

while (i = fgetc(input) != EOF) 
    {
        while ((i = fscanf(input, "%d\n%d:%d:%d,%d --> %d:%d:%d,%d\n%[^'']", &order, &csh, &csm, &css, &csms, &ceh, &cem, &ces, &cems, text) > 0))
        {

            printf("%d\n%d:%d:%d,%d --> %d:%d:%d,%d\n%s\n", order, csh, csm, css, csms, ceh, cem, ces, cems, text);



        }
    }
...