Я читаю пользовательский ввод и получаю правильную строку, но когда я пытаюсь передать ту же строку в 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 найти причину этого?