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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 16:50   #1
mato
Пользователь
 
Регистрация: 29.04.2009
Сообщений: 57
По умолчанию Помогите запустить програму

Вот такая программа не хочет работать не могу понять почему ,
не проходет второго if сразу видает "bad format"
помогите пожалуйста.
Код:
#include <iostream>
using namespace std;
int main(int argc ,int *argv[])
{;
	if(argc <2)
	{
		cout << "-ael file"<<endl;
		return 1;
	}
	if(*argv[1]!= '-')
	{
		cout << "bad format" << endl;
		return 1;
	}
	char ch = *(argv[1]+1);
	switch(ch)
	{
	case 'a':
		cout << "to add" << endl;
		break;
	case 'e':
		cout << "to paking" << endl;
		break;
	case 'l':
		cout << "arhiv files" << endl;
		break;
	default:
		cout << "erors" << endl;
		break;
	}
	return 0;
}

Последний раз редактировалось Stilet; 29.04.2009 в 16:58.
mato вне форума Ответить с цитированием
Старый 29.04.2009, 16:59   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Помоему в Сях приведение к типу так делается
Код:
if((CHAR)*argv[1]!= '-')
ну и надо проверить, может параметров вообще не передавалось...
Цитата:
int *argv[])
кстати, ты то тут обьявил целый тип, а проверяешь на символьный...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2009, 17:02   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <iostream>
using namespace std;
int main(int argc ,int *argv[])
{
if(argc <2)
 {
 cout << "-ael file"<<endl;
 return 1;
 }
if(((char*)argv[1])[0]!= '-')
 {
 cout << "bad format" << endl;
 return 1;
 }
char ch = ((char*)argv[1])[1];
switch(ch)
 {
 case 'a':
  cout << "to add" << endl;
  break;
 case 'e':
  cout << "to paking" << endl;
  break;
 case 'l':
  cout << "arhiv files" << endl;
  break;
 default:
  cout << "erors" << endl;
  break;
 }
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.04.2009, 17:24   #4
mato
Пользователь
 
Регистрация: 29.04.2009
Сообщений: 57
По умолчанию

спасибо за помощь если не сложно объясните ето выражения
if(((char*)argv[1])[0]!= '-') откуда взялся char*
mato вне форума Ответить с цитированием
Старый 29.04.2009, 17:36   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

омг.. А я-то думаю, что за ахинея..Почему не работает по-человечески.
Надо не
Код:
int *argv[]
а
Код:
char *argv[]
Тогда код такой:
Код:
#include <iostream>
using namespace std;
int main(int argc ,char *argv[])
{
if(argc <2)
 {
 cout << "-ael file"<<endl;
 return 1;
 }
if(argv[1][0]!='-')
 {
 cout << "bad format" << endl;
 return 1;
 }
char ch = argv[1][1];
switch(ch)
 {
 case 'a':
  cout << "to add" << endl;
  break;
 case 'e':
  cout << "to paking" << endl;
  break;
 case 'l':
  cout << "arhiv files" << endl;
  break;
 default:
  cout << "erors" << endl;
  break;
 }
return 0;
}
-------------------------
Но могу объяснить и то, что было:
Код:
((char*)argv[1])[0]
Приводим аргумент argv[1] к типу char*. Потом берем 0-й символ.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.04.2009, 17:40   #6
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Это приведение типов. Необходимо чтобы сравнивались соизмеримые величины а не, образно говоря, километры с килограмами
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 29.04.2009, 17:53   #7
mato
Пользователь
 
Регистрация: 29.04.2009
Сообщений: 57
По умолчанию

всем спасибо за помощь
у меня стояло int
а надо било char
вот и вся била проблема
mato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребята помогите зделать програму в Delphi 7 PashAs Помощь студентам 17 30.04.2009 13:51
Помогите написать програму TheVenny Помощь студентам 3 05.11.2008 19:52
Помогите пж составить данную програму на Pascal.... Dima_my Помощь студентам 1 04.06.2008 15:29
как запустить програму при перетаскивание на неё файла SeRhy Общие вопросы Delphi 3 09.01.2008 23:12