Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/117: Рейтинг темы: голосов - 117, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19

Открыть файл, имя которого задается из командной строки

14.10.2011, 15:38. Показов 23164. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в том, чтобы открыть файл, имя которого пользователь впечатывает в консоли
Когда пытаюсь сделать это с помощью потоков, все открывается, но только если в имени файла нет русских букв. Кодировка многобайтовая, это обязательно для работы приложения.
C++
1
2
3
4
void OTKR(const unsigned char* IMYA)
{
    file.open((char*)IMYA, fstream::in | fstream::out | fstream::app);
}
Когда делаю это с помощью указателей, вообще ничего не открывается, но если я впишу в программе путь заранее, открывается и с русскими буквами в пути.
C++
1
2
3
4
void OTKR(const unsigned char* IMYA)
{
    F=fopen((const char*)IMYA,"r+");    
}
Если вызову функцию так:
C++
1
OTKR((const unsigned char *)"C:\\Users\\Дима\\Desktop\\1.txt");
то все будет работать, но мне нужно чтоб из консоли задавался путь.
Что можно сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2011, 15:38
Ответы с готовыми решениями:

Открыть файл, имя которого задается с клавиатуры. Переписать в новый файл только те слова, которые состоят из цифр
В коде надо сделать так, чтобы он находил цифры, а не игнорировал их, и, по возможности выводил на экран, или другой нормальный вывод...

Открыть файл, имя которого задается с клавиатуры. Посчитать количество байт в этом файле. Первую половину прочитанного файла записать в другой файл.
ребят помогите! плиз!!1. Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество байт в этом файле....

Лабораторная работа номер 5 задание 1! Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество байт в этом файле
Лабораторная работа номер 5 задание 1!!!! Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество...

10
5 / 5 / 0
Регистрация: 12.10.2011
Сообщений: 46
14.10.2011, 15:42
IMYA - у тебя char?
попробуй string мб?
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
14.10.2011, 17:16
вот
C++
1
2
3
4
5
6
7
8
9
int main(int argc, char *argv[])
{
    FILE *f;
    argv[1]="c:\\keys.txt";
    f=fopen(argv[1],"rt");
    std::cout << f;
    getch();
    return 0;
}
0
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
14.10.2011, 20:04  [ТС]
Цитата Сообщение от Van111 Посмотреть сообщение
вот
C++
1
2
3
4
5
6
7
8
9
int main(int argc, char *argv[])
{
    FILE *f;
    argv[1]="c:\\keys.txt";
    f=fopen(argv[1],"rt");
    std::cout << f;
    getch();
    return 0;
}
Не работает, не открывает файл.
И все равно эт не то, чего бы мне хотелось, здесь задается имя файла в коде, а я хочу, чтобы из консоли.
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
14.10.2011, 21:51
ну блин вы программист программистский
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdlib>
#include <iostream>
#include "stdio.h"
#include "conio.h"
 
using namespace std;
int main(int argc, char *argv[])
{
    FILE *f;
    char s[20];
    cin >> s;
    f=fopen(s,"rt");
    std::cout << f;
    getch();
    return 0;
}
если это вас не устроит то я повешусь
0
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
14.10.2011, 21:55
после получения строки, попробуйте OemToAnsi.
более чем уверен, что решит проблему.
просто когда вы пишете сразу в коде, кодировка нормальная.
когда через консоль, то Oem, а коды символов там не совпадают.
2
Заблокирован
14.10.2011, 21:56
Цитата Сообщение от NegativeCreep Посмотреть сообщение
Проблема в том, чтобы открыть файл, имя которого пользователь впечатывает в консоли
Когда пытаюсь сделать это с помощью потоков, все открывается, но только если в имени файла нет русских букв. Кодировка многобайтовая, это обязательно для работы приложения.
C++
1
2
3
4
void OTKR(const unsigned char* IMYA)
{
    file.open((char*)IMYA, fstream::in | fstream::out | fstream::app);
}
Когда делаю это с помощью указателей, вообще ничего не открывается, но если я впишу в программе путь заранее, открывается и с русскими буквами в пути.
C++
1
2
3
4
void OTKR(const unsigned char* IMYA)
{
    F=fopen((const char*)IMYA,"r+");    
}
Если вызову функцию так:
C++
1
OTKR((const unsigned char *)"C:\\Users\\Дима\\Desktop\\1.txt");
то все будет работать, но мне нужно чтоб из консоли задавался путь.
Что можно сделать?
Прежде, чем сюда писать, вы хоть проделайте минимальную работу, то есть определите ошибку, которую генерирует открытие файла с помощью fopen. Почему мы должнеы гадать на кофейной гуще?!!!
1
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
15.10.2011, 01:42  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
Прежде, чем сюда писать, вы хоть проделайте минимальную работу, то есть определите ошибку, которую генерирует открытие файла с помощью fopen. Почему мы должнеы гадать на кофейной гуще?!!!
не выдает ошибок никаких, все компилируется и запускается, однако если в пути к файлу есть папки на русском языке, он его не открывает и действий никаких не производит над ним, т.е. когда я вызываю fopen или fread какие-то действия производятся, но с нужным файлом ничего не происходит
после получения строки, попробуйте OemToAnsi.
более чем уверен, что решит проблему.
просто когда вы пишете сразу в коде, кодировка нормальная.
когда через консоль, то Oem, а коды символов там не совпадают.
Функция и вправду переводит из Oem в Ansi, однако в консоль выводится не то и что самое печальное, с файлом работа так и не производится
Миниатюры
Открыть файл, имя которого задается из командной строки   Открыть файл, имя которого задается из командной строки  
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
15.10.2011, 03:21
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char* argv[])
{
   char s[250], t[250];
   cin.getline(s,250);
   OemToChar(s,t);
   fstream file(t);
   if (file.is_open())
   {
      cout << "The file " << s << " successful open." << endl;
      file.close();
   }
   return 0;
}
1
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 19
15.10.2011, 03:48  [ТС]
Добавлено через 2 минуты
Цитата Сообщение от kazak Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char* argv[])
{
   char s[250], t[250];
   cin.getline(s,250);
   OemToChar(s,t);
   fstream file(t);
   if (file.is_open())
   {
      cout << "The file " << s << " successful open." << endl;
      file.close();
   }
   return 0;
}
заработало, огромное спасибо!
1
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
15.10.2011, 03:48
Зайдем с другой стороны, какой компилятор?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2011, 03:48
Помогаю со студенческими работами здесь

Открыть файл, имя которого задается из командной строки
В файле записана непустая последовательность целых чисел. Нужно открыть файл на чтение, НО имя файла задается в командной строке. ...

CreateFile - открыть файл, получив имя из командной строки
Здравствуйте! Я только начал программировать на WinAPI, поэтому пока не могу разобраться со следующим вопросом. Мне требуется...

Как прочитать файл, имя которого задано в параметрах командной строки?
Всем привет, кто-нибудь знает, как прочитать файл, имя которого задано в параметрах командной строки?

Ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя системные вызовы и в
ПОМОГИТЕ ПОЖАЛУЙСТА Ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя системные вызовы...

Ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке, используя системные вызовы
ПОМОГИТЕ, ПОЖАЛУЙСТА, ПОНЯТЬ. У МЕНЯ ЕСТЬ ЗАДАЧА &quot;Ввод с клавиатуры содержимого текстового файла, имя которого задается в командной строке,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru