Проверьте наличие файла .txt в C - PullRequest
0 голосов
/ 22 мая 2019

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

Я создал функцию, которая, как мне показалось, будет работать, но, похоже, у меня проблема сВызов переменной и не вводить имя файла напрямую.(Я не уверен, что это проблема).

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

char* fileCheck();
char* fileCheck()
{
    char* fileName;
    printf("Please enter a file name: ");
    gets(fileName);
    while (access(fileName, F_OK) == -1)
    {
        printf("The File %s was not Found\nPlease enter a new file name: ", fileName);
        gets(fileName);
    }
    return fileName;
}

int main (void)
{
    fileCheck();
    return 0;
}

Я ожидаю, что вывод функции будет действительным (существующим) именем файла.На самом деле я получаю код выхода номера мусора.

1 Ответ

6 голосов
/ 22 мая 2019

gets хочет комнату, вы не можете использовать gets с нераспределенным пространством, должно быть char filename[SOME_SIZE];

С другой стороны, не используйте gets, поскольку он больше не является частью языка, вместо этого используйте fgets и уберите завершающий перевод строки.

Прочтите это, как отследить перевод строки Удаление завершающего символа новой строки из ввода fgets ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...