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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_nobody_
3 / 3 / 0
Регистрация: 18.04.2009
Сообщений: 115
#1

Запись в файл содержимого консоли - C++

05.11.2009, 22:39. Просмотров 828. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
int main (int argc, LPTSTR    argv[])
{
cout<<argv[1]<<endl<<argv [2];
HANDLE hIn, hOut;
hIn=CreateFile (argv [1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
}
проблема в том что вместо того что я ввожу выводятся какие-то цифры... может есть способ написать так:
C++
1
int main (int argc, char*   argv[])
а потом как то конвертнуть argv в LPTSTR или в LPWSTR или может в TCHAR????
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
06.11.2009, 00:15     Запись в файл содержимого консоли #2
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>
#include <iostream>
using namespace std;
 
int main (int argc, LPTSTR    argv[]){
 cout<<argv[1]<<endl<<argv [2];
 HANDLE hIn, hOut;
 hIn=CreateFile (argv [1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
 getchar ();
}
Так нормально всё выводится.
Но! Если писать латиницей!
_nobody_
3 / 3 / 0
Регистрация: 18.04.2009
Сообщений: 115
06.11.2009, 02:13  [ТС]     Запись в файл содержимого консоли #3
kravam,
я не понимаю чем твой код отличается от моего.... тот же масив из LPTSTR .... и так же само ввожу два названия файла (на латинице) и так же само си аут выводит какие то левые цифры и буквы..
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
06.11.2009, 02:44     Запись в файл содержимого консоли #4
1) Выложи полностью код
2) Я так понял, ты запускаешь прогу из командной строки так:
C++
1
proga.exe proba1 proba2
Вместо
C++
1
2
proba1 
proba2
Видишь чушь. Так?
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
06.11.2009, 10:53     Запись в файл содержимого консоли #5
Цитата Сообщение от _nobody_ Посмотреть сообщение
а потом как то конвертнуть argv в LPTSTR или в LPWSTR или может в TCHAR????
ты сам понимаешь, что спросил?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// если у нас объвлен UNICODE, то 
// LPTSTR = LPWSTR, если нет - то LPTSTR = LPSTR
#ifdef UNICODE
 typedef LPWSTR LPTSTR;
#else
 typedef LPSTR LPTSTR;
#endif
 
// LPSTR = указатель на CHAR
typedef CHAR *LPSTR;
 
// LPWSTR = указатель на WCHAR
typedef WCHAR *LPWSTR;
 
//Если объявлен UNICODE, то
// TCHAR = WCHAR, если нет - TCHAR = char
#ifdef UNICODE
 typedef WCHAR TCHAR;
#else
 typedef char TCHAR;
#endif
_nobody_
3 / 3 / 0
Регистрация: 18.04.2009
Сообщений: 115
06.11.2009, 14:44  [ТС]     Запись в файл содержимого консоли #6
kravam,
да..ты все правильно понял.... а зачем еще код какой то? я выложил все необходимое.... еще разве что инклуды сюда добавить)
ну разве что вот
C++
1
2
3
4
5
6
7
8
hIn=CreateFile (argv [1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
 
    if (hIn==INVALID_HANDLE_VALUE) 
    { 
        cout<<"error";
        getch();
        return 2;
    }
сдесь выводит "error" так как имя файла в CreateFile не читаемое.... это думаю весь код что нужно....

Добавлено через 1 час 26 минут
кстате если написать так
C++
1
2
TCHAR stdPath[30] = TEXT("bla.txt");
hIn=CreateFile (stdPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
то все нормально... но мне нужно чтобы оно было через командную...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2009, 19:06     Запись в файл содержимого консоли
Еще ссылки по теме:

C++ Запись кириллицы в строку из консоли
Запись содержимого объекта в файл C++
C++ Скопировать текст из консоли в файл
C++ Как записать с консоли в файл русское слово?
C++ Ввод в файл с консоли русского текста

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
06.11.2009, 19:06     Запись в файл содержимого консоли #7
Причина неясна
Как бы отлаживал я:
Написал бы код:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <windows.h>
#include <iostream>
using namespace std;
 
int main (int argc, LPTSTR    argv[]){
 cout<<argv[1]<<endl<<argv [2]<<endl;
 cout<<&argv[1]<<endl<<&argv[2];
 HANDLE hIn, hOut;
 hIn=CreateFile (argv [1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
 getchar ();
}
Выполнил бы. Потом НЕ ЗАКРЫВАЯ проги открыл этот отладчик, приаттачился бы к процессу и посмотрел, что находится по выведенным адресам.
По выведенным адресам должны находиться параметры. Потом не знаю, что бы делал. По обстоятельствам. Но я бы добил таким образом всё равно.
Yandex
Объявления
06.11.2009, 19:06     Запись в файл содержимого консоли
Ответ Создать тему
Опции темы

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