Форум программистов, компьютерный форум CyberForum.ru

Ввод имени файла с клавиатуры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.90
amfisat
 Аватар для amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 235
06.12.2011, 09:24     Ввод имени файла с клавиатуры #1
Всем привет!

Хочу сделать так:
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    char finame[15];
    printf("Enter the name of file: ");
    scanf_s("%s", &finame);
        FILE *f = fopen(finame, 'r');
        if(!f) printf ("Error!");
    ...
    return 0;
}
Но, несмотря на то, что файл 100% существует - всегда печатается Error! и файл не обрабатывается дальше. Как быть?

Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
06.12.2011, 14:33     Ввод имени файла с клавиатуры #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
int main( void ) {
    char finame[ 15 ];
    printf( "Enter the name of file: \n" );
    scanf( "%s", finame ); //без амперсанда
    FILE *f = fopen( finame, "r" ); // кавычки заменить
    if ( !f )
        printf( "Error!" );
    else
        printf( "Good!" );
 
    return EXIT_SUCCESS;
}
Имя существующего файла 111222
Вывод консоли:
Код
Enter the name of file: 
111222
Good!
Код
Enter the name of file: 
111
Error!
amfisat
 Аватар для amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 235
06.12.2011, 14:58  [ТС]     Ввод имени файла с клавиатуры #3
А если я таким же макаром пытаюсь ввести имя выходного файла, то выскакивает ошибка. Получается, выходной файл обязательно должен существовать? - нам говорили, что это не обязательное условие.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
06.12.2011, 15:16     Ввод имени файла с клавиатуры #4
у файла для вывода ключ открытия должен быть "w"
-=ЮрА=-
Заблокирован
Автор FAQ
06.12.2011, 15:20     Ввод имени файла с клавиатуры #5
На мой взгляд имя файла лучше всего вводить через "умный спецификатор" scanf
C
1
2
char fPath[256];
scanf("%[^\n]",fPath);
- можно вводить с пробелами, считает все символы до нажатия Enterа аналогично плюсовому cin.getline
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.12.2011, 15:42     Ввод имени файла с клавиатуры #6
-=ЮрА=-, scanf придуман для того, чтобы считывать до пробела
Рекомендую
C
1
2
char name[BUFSIZ];
fgets (name,BUFSIZ,stdin);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2011, 17:32     Ввод имени файла с клавиатуры
Еще ссылки по теме:

C++ Ввод двумерного массива с клавиатуры и из файла
C++ Ввод массива как с клавиатуры, так и из файла
C++ Ввод имени файла и текста с консоли

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
06.12.2011, 17:32     Ввод имени файла с клавиатуры #7
Цитата Сообщение от go Посмотреть сообщение
scanf придуман для того, чтобы считывать до пробела
введи You are wrong

в
C
1
2
scanf("%s",str); 
scanf("%[^\n]",str);
и почувствуй разницу...!

Добавлено через 1 минуту
scanf придуман чтобы осуществлять ввод в соответсвии со спецификатором формата, а ты наплёл хр*ни, если не знаешь не пиши!
Yandex
Объявления
06.12.2011, 17:32     Ввод имени файла с клавиатуры
Ответ Создать тему
Опции темы

Текущее время: 03:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru