C stdlib fopen не может найти файлы при передаче имени файла в качестве переменной - PullRequest
0 голосов
/ 18 апреля 2020

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

Когда я жестко кодирую имя файла в виде строки в вызове функции это работает, но потом я также получаю какую-то ошибку, используя любую из функций записи файлов.

Чувствую, что ничего не работает, если честно. Я перепробовал полный путь к файлу, переместил файл для запуска каталога и снова открыл Visual Studio. Обе проблемы сохраняются.

Можно ли каким-то образом убедиться, что мой stdlib не поврежден или что-то в этом роде?

РЕДАКТИРОВАТЬ: имя файла теперь правильно анализируется благодаря вашей помощи!

У меня все еще есть следующая проблема:

struct time {
    char* desc;
    int month;
    int day;
    int hour;
};

void saveToFile(unsigned int count, struct time** reservations) {
    char* file = strtok(NULL, " ");
    char* clean = calloc(strlen(file), sizeof(char));
    if (clean != NULL) {
        strncpy(clean, file, strlen(file) - 1);
        FILE* writeTo = fopen(clean, "w");
        if (writeTo != NULL) {
            for (unsigned int i = 0; i < count; i++) {
                char s[80] = { 0 };
                sprintf(s, "A %s %d %d %d\n", reservations[i]->desc, reservations[i]->month,
                    reservations[i]->day, reservations[i]->hour);
                printf("%s", s);
                fprintf(writeTo, "A %s %d %d %d", reservations[i]->desc, reservations[i]->month,
                    reservations[i]->day, reservations[i]->hour);
            }
            if (ferror) printf("An error occurred while saving the data...\n");
            else printf("The calendar has successfully been saved to \"%s\"\n", clean);
            fclose(writeTo);
        }
        else printf("Could not find file...");
    }
}

Выполнение этого кода теперь записывает, по-видимому, правильно в файл, но устанавливает флаг ferror, и я получаю печать соответственно. ERRNO равен 0. Как я мог go найти причину этого?

1 Ответ

0 голосов
/ 18 апреля 2020

Маловероятно, что ваш stdlib поврежден, вам придется показать нам свой код, чтобы мы могли найти ошибку.

Возможно, у вас есть \ n в конце ввода.

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