Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
nstwf
88 / 78 / 56
Регистрация: 19.02.2016
Сообщений: 336
Завершенные тесты: 1
1

Файлы и их создание в определенной директории

16.06.2016, 16:55. Просмотров 770. Ответов 14
Метки нет (Все метки)

Здравствуйте, форумчане, хотелось бы узнать кое-что по данному вопросу, а конкретнее задаче:
Нужно создать при запуске определенную папку
Далее проверить, есть ли в ней файл, в этой папке, или нет
Если есть - открыть его и продолжать работу с ним
Если нет - создать файл с заданным именем в этой папке

Проблема в том, что не работает именно условие

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    CreateDirectoryW(L"Lists",NULL);
    string fname;
    cout << "Введите название файла: ";
    cin >> fname;
    string fname1 = "/Lists/" + fname; // Делаем строку с данной папкой
    ofstream fin(fname1);
    if (!fin.is_open()) // если есть, то пишем, что все открылось
    {
        cout << "Открылось!" << endl;
    }
    else // если нет, то создаем файл в папке Lists 
    {
        cout << "Неудача!" << endl;
        ofstream cr(fname);
        cr.close();
    }
    fin.close();
Всем благодарен за участие в вопросе.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 16:55
Ответы с готовыми решениями:

Файлы в директории.
Задача такова: Есть .exe программы. Лежит в папке. Нужна функция которая...

Как собрать файлы в директории?
Привет всем! Пользователем в программе задаётся директория (начальная папка)....

Файлы: редактирование определенной строки
как мне сделать редактирования файла? допустим вместо строки 2 которую я ввел...

Просканировать директорию, вложенные в неё директории, и файлы находящие в них
в среде windows нужно просканировать директорию, вложенные в неё директории, и...

Дописать во все файлы *.txt одной директории заданную строку
Если заданная многострочная строка не присутствует в файле, нужно дописать её в...

14
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
16.06.2016, 17:06 2
C++
1
ofstream cr(fname1);
0
nstwf
88 / 78 / 56
Регистрация: 19.02.2016
Сообщений: 336
Завершенные тесты: 1
16.06.2016, 17:11  [ТС] 3
nmcf, проблема в том, что программа зависает просто, после ввода имени.
Если есть - не открывает, если нет - ничего не создает. Просто зависает и ничего не воспроизводит.
0
Миниатюры
Файлы и их создание в определенной директории  
nstwf
88 / 78 / 56
Регистрация: 19.02.2016
Сообщений: 336
Завершенные тесты: 1
16.06.2016, 17:15  [ТС] 4
Зависания исправил, теперь открывает все, что угодно, даже если файла и нет в папке...
0
Миниатюры
Файлы и их создание в определенной директории  
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
16.06.2016, 17:19 5
У тебя условие неправильное - отрицание убери.
0
nstwf
88 / 78 / 56
Регистрация: 19.02.2016
Сообщений: 336
Завершенные тесты: 1
16.06.2016, 17:24  [ТС] 6
nmcf, Мне кажется, но проблема именно в строке - fname1, ибо теперь не открывает даже то, что есть...
0
Миниатюры
Файлы и их создание в определенной директории  
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
16.06.2016, 17:29 7
Актуальный вариант покажи. И удали это всё. Пусть программа сама создаст, может Lists не там ищет.
0
nstwf
88 / 78 / 56
Регистрация: 19.02.2016
Сообщений: 336
Завершенные тесты: 1
16.06.2016, 17:31  [ТС] 8
nmcf, Что конкретно удалить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void main()
{
    CreateDirectoryW(L"Lists", NULL);
    string fname;
    cout << "Введите название файла: ";
    cin >> fname;
    string fname1 = "/Lists/" + fname; // Делаем строку с данной папкой
    cout << fname1 << endl;
    ofstream fin("\Lists\1.txt");
    if (fin.is_open()) // если есть, то пишем, что все открылось
    {
        cout << "Открылось!" << endl;
    }
    else // если нет, то создаем файл в папке Lists 
    {
        cout << "Неудача!" << endl;
        ofstream cr(fname1);
        cr.close();
    }
    fin.close();
    _getch();
}
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
16.06.2016, 17:33 9
C++
1
ofstream fin("/Lists/1.txt");
0
nstwf
88 / 78 / 56
Регистрация: 19.02.2016
Сообщений: 336
Завершенные тесты: 1
16.06.2016, 17:40  [ТС] 10
nmcf, Это я пробовал сделать проверку сразу по пути и названию файла, который есть.

Попробовал просто создать файл в данной папке - получилось
C++
1
2
3
        cout << "Создаем новый" << endl;
        ofstream cr("Lists/5.txt");
        cr.close();
А вот если уже подставить так, то ничего не происходит:
C++
1
2
3
4
5
6
7
    string fname;
    cout << "Введите название файла: ";
    cin >> fname;
    string fname1 = "/Lists/" + fname; // Делаем строку с данной папкой
    cout << "Создаем новый" << endl;
    ofstream cr(fname1);
    cr.close();
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
16.06.2016, 17:46 11
Лучший ответ Сообщение было отмечено nstwf как решение

Решение

Слэш перед Lists убери.
1
nstwf
88 / 78 / 56
Регистрация: 19.02.2016
Сообщений: 336
Завершенные тесты: 1
16.06.2016, 17:48  [ТС] 12
Ура, большое спасибо, глупая ошибка.
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
16.06.2016, 17:54 13
Вообще-то, если написать полностью с точкой, то должно работать: "./Lists/".
0
nstwf
88 / 78 / 56
Регистрация: 19.02.2016
Сообщений: 336
Завершенные тесты: 1
16.06.2016, 18:54  [ТС] 14
nmcf, Ложная тревога, условие все равно не работает...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    string fname;
    cout << "Введите название файла: ";
    cin >> fname;
    string fname1 = "./Lists/" + fname;
    ofstream fout(fname1);
    if (fout.is_open())
    {
        cout << "Открылось..";
    }
    else
    {
        cout << "Создаем новый";
        ofstream cr(fname1);
        cr.close();
    }
Добавлено через 57 минут
Может кто знает, в чем ошибка?
Или я неправильно как-то условие записываю, хотя все вроде по примеру сделал..
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
16.06.2016, 20:18 15
Всё работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    CreateDirectoryW(L"Lists", NULL);
 
    string fname;
    cout << "Name: ";
    cin >> fname;
    string fname1 = "./Lists/" + fname; // Делаем строку с данной папкой
    cout << fname1 << endl;
    ifstream fin(fname1);
    if (fin.is_open()) // если есть, то пишем, что все открылось
    {
        cout << "Opened!" << endl;
    }
    else // если нет, то создаем файл в папке Lists 
    {
        cout << "Fail!" << endl;
        ofstream cr(fname1);
    }
0
16.06.2016, 20:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 20:18

Создание файла в указанной директории
Добрый вечер. Есть задание, пользователь запускает программу из консоли с одним...

Создание скриншота определенной области экрана
Добрый день. Стоит передо мной задача делать скриншоты определенной части...

Нажатие определенной клавиши на клавиатуре = Запуск определенной функции
Здравствуйте. У меня такой вопрос: как при нажатии, к примеру, клавиши &quot;1&quot; на...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru