Строчный поиск с использованием strstr - PullRequest
1 голос
/ 04 мая 2020

Я пытался найти систему, которая построчно ищет в файле номер 6 di git, и, когда он находит его, он ломает l oop и выводит найденную строку, но для по какой-то причине, когда я запускаю попытку, программа просто завершается. Любая помощь будет оценена

        searching = 1;
        while (searching == 1) {
            search = 0;
            printf("Please enter the UP number of the student:\n");
            scanf(" %d", &w);
            while (search != 1) {
                fgets(line, 60, StudentDB);
                t = strstr(line, w);
                if (t != NULL && t != -1) {
                    search = 1;
                    printf("The student's data is:\n");
                    printf("%s\n", line);
                    printf("What would you like to do now\n1. Edit marks\n2. Delete record\n3. Search for a different record\n4. Return to menu\n");
                    scanf(" %d", &v);
                    switch (v)
                    case 1:

                    case 2:

                    case 3:
                        break;
                    case 4:
                        ;
                        break;
                    }
               if (line == EOF) {
                    search = 1;
                    printf("There is no student with that UP number saved.\nWhat would you like to do?\n");
                    printf("1. Search for a different number\n2. Return to the menu\n");
                    scanf(" %d", &v);
                    switch (v) {
                        case 1:
                            break;
                        case 2:
                            searching = 0;
                            search = 1;
                            break;
                        }
                } else {
                    printf("Something went horribly horribly wrong");
                }
                break;
            }
        }

1 Ответ

0 голосов
/ 04 мая 2020

Вы не можете искать число с t = strstr(line, w);

Второй аргумент strstr должен быть строкой. Вы должны определить w как char w[7];, прочитать число 6 di git как строку с scanf("%6s", w) и использовать strstr(line, w), чтобы найти число в строке.

Обратите также внимание, что t != -1 не имеет смысла, t должен быть char *, который будет либо NULL, если номер не указан, либо действительным указателем на строку, если strstr нашел число на нем.

Аналогично, нет смысла проверять конец файла после поиска строки: в конце файла fgets() возвращает NULL и строка не была прочитана.

...