Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2009, 12:05   #1
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию параметры командной строки.

Добрый день!

Столкнулся со смешной проблемой. В VS2008 пытаюсь вывести на печать параметры командной строки:

Код:
#include <tchar.h>
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
	switch(argc)
	{
	case 1: 
		printf("%d - %s\n", argc, argv); 
		break;
	case 2: 
		printf("%d - %s,%s\n", argc, argv[0], argv[1]); 
		break;
	case 3: 
		printf("%d - %s,%s,%s\n", argc, argv[0], argv[1], argv[2]); 
		break;
	default: 
		printf("Error!\n"); 
		break;
	}

	return(0);
}
Выводит только количество параметров и первую букву каждой заданной строки, вместо самих строк.
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 17.11.2009, 12:20   #2
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Проблема крылась в юникоде. Исправленный вариант:

Код:
	switch(argc)
	{
	case 1: 
		_tprintf(_T("%d - %s\n"), argc, argv[0]); 
		break;
	case 2: 
		_tprintf(_T("%d - %s,%s\n"), argc, argv[0], argv[1]); 
		break;
	case 3: 
		_tprintf(_T("%d - %s,%s,%s\n"), argc, argv[0], argv[1], argv[2]); 
		break;
	default: 
		_tprintf(_T("Error!\n")); 
		break;
	}
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 20.11.2009, 11:28   #3
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Чтобы не плодить темы, пишу здесь.

Задача та же - обработка входных параметров командной строки.

Мне необходимо в программу передать путь к файлу. Все стандартно:

Код:
int _tmain(int argc, _TCHAR* argv[])
{
	if(argc!=2)
	return(-1);

	MyClass ObjMyClass(argv[1]);//некоторая обработка
запускаю: myprogram.exe c:\somefile.txt or myprogram.exe c:\\somefile.txt

выдается ошибка:

Код:
an unhandled exception - необработанное исключение
При этом если я делаю так:

Код:
int _tmain(int argc, _TCHAR* argv[])
{
	if(argc!=2)
	return(-1);

	_TCHAR *buf1 = _TEXT("c:\\somefile.txt ");

	MyClass ObjMyClass(argv[1]);
все работает. В чем косяк?
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 20.11.2009, 11:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У меня все работает:
Проверь на этом примере
Код:
int _tmain(int argc, _TCHAR* argv[])
{
for (int i = 0; i < argc; i++) {
 cout<<argv[i]<<'\n';
}
 system("pause");
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2009, 20:15   #5
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

адресс вашего "an unhandled exception" ? вообще всю строчку напишите!
lennon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение командной строки z3rg Общие вопросы C/C++ 4 17.04.2009 22:26
Получение параметров командной строки по PID sadist_ds Win Api 1 25.02.2009 20:22
Параметры из командной строки ProGg Паскаль, Turbo Pascal, PascalABC.NET 5 13.02.2009 00:17
Выполнение командной строки в Delphi Alar Общие вопросы Delphi 0 29.10.2006 19:44