ВОПРОС
Откройте файл с клавиатурным вводом Напишите программу C, которая просит к пользователю имя файла (имя может содержать путь к каталогу ) и пытается открыть файл. Программа отображает сообщение «Файл open!» Или «Ошибка открытия файла» (программа не читает файл, просто пытается открыть ). Используйте 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()' опасен для использования?] (Http://stackoverflow.com/questions/1694036/why-is-the-gets-function-dangerous-why-should-it-not -использоваться). И сообщите своему учителю, что он написал назначение, которое использует 'gets()' - его никогда не следует использовать. –
Вам нужно передать имя каталога, введенное пользователем, в 'fopen()' - это совершенно отдельно от 'printf()', хотя оно немного похоже на то, как будто вы пытаетесь смешивать записи. Используйте: 'fp = fopen (каталог,« r »):' который, вероятно, все равно будет терпеть неудачу, если данное имя является каталогом, но будет работать, если это файл. Кроме того, рекомендуется прекращать сообщения с помощью новой строки, а не (или иногда так же), начиная сообщение с новой строкой. –
Второе, что сказал Джонатан Леффлер. Никогда не используйте 'gets', ни при каких обстоятельствах. (Извините, что я пронзительный, но это важно.) –