ВОПРОС
Открытие файла с клавиатуры Напишите программу на C, которая запрашивает у пользователя имя файла (имя также может содержать путь к каталогу) и пытается открыть файл. Программа выводит сообщение «Файл открыт!» или «Ошибка открытия файла» (программа не читает файл, а просто пытается его открыть). Используйте gets() для получения ввода пользователя
Поэтому, используя приведенный ниже код, я попытался прочитать путь к каталогу файла, а затем скопировать этот путь к каталогу файла в fopen(), а затем подтвердить, был ли файл открыт или нет. Путь к каталогу файла вводится пользователем с помощью gets().
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char directory[100];
printf("Please enter the directory path of the file you wish to open.\n");
gets(directory);
fp = fopen("%s,directory","r");
if(fp==NULL)
{
printf("\nCannot open file.");
}
else
{
printf("\nFile open!");
}
return 0;
}
МОЯ ПРОБЛЕМА
Независимо от того, что я вставил, это не работает, и я скопировал пути к каталогам файлов непосредственно из других программ, которые я создал, и я знаю, что они работают. Любые идеи?
gets()
опасно использовать ?. И отругайте учителя за то, что он написал задание, в котором используетсяgets()
— его никогда нельзя использовать. - person Jonathan Leffler   schedule 01.04.2016fopen()
, что совершенно отдельно отprintf()
, хотя это выглядит так, как будто вы пытаетесь смешать обозначения. Используйте:fp = fopen(directory, "r"):
, который, вероятно, по-прежнему не будет работать, если данное имя является каталогом, но будет работать, если это файл. Кроме того, рекомендуется заканчивать сообщения символом новой строки вместо того, чтобы (а иногда и лучше) начинать сообщение с новой строки. - person Jonathan Leffler   schedule 01.04.2016gets
ни при каких обстоятельствах. (Извините за резкость, но это важно.) - person Steve Summit   schedule 01.04.2016