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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2009, 23:51   #1
konstantinopol
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 14
Восклицание Неправильная работа switch в while

Такая ситеация надо написать меню для клиента который потом будет подсоединятся к серверу, написанно всё в С. Когда программа стартуется в текст вписывается "/m" и вызывается меню из switch, и просит ввести последующие команды. Если в поле снова ввели "/m" то меню вызывается снова и всё это пакуется в while(1) чтобы клиент не отсоединялся от севака. Так должно быть.
Но каким-то образом он у меня постоянно заходит в if() и я с этим ничего немогу подулать. И всё это повторяется бессконечное количество раз. Немогу найти ошибку. Прошу помощи. Выкладываю часть кода в котором содержится ошибка.

Код:
char text[1000]="/m";
	while(1)
	{
		char uid[5]="";
		sprintf(uid,"%d",getuid());
		
		numbytes = send(remote_socket,uid,45,0);
		
		if(strcmp(text,"/m") || strcmp(text,"/b") || strcmp(text,"/n") || strcmp(text,"/l") || strcmp(text,"/e"))
		{
			printf("\n\nText : %s\n",text);
			switch(text[1])
			{
				case 'm':
					printf("\n+---------------Munue--------------+\n");
					printf("Menu                        	- /m\n");
					printf("Ich binn bereit zu schprechen	- /b\n");
					printf("Ich will nicht schprechen       - /n\n");
					printf("Liste aller Users anzeigen  	- /l\n");
					printf("Exit                        	- /e\n");
					printf("+----------------------------------+\n");
					
					scanf("%s",text);
					break;
				
				case 'b':
					
					break;
				case 'n':
				
					break;
				case 'l':
					
					break;
				case 'e':
					close(remote_socket);
					exit(0);
					break;
				default:
					printf("Fahlsche auswahl\n");
					strcpy(text,"/m");
					break;
			}
		}
		scanf("%s",text);
		printf("TEST1:%sx\n",text);
		numbytes = send(remote_socket,text, 1000, 0);
		// Antwort vom Server lesen
		numbytes=recv(remote_socket, buf, 1000, 0);
		//printf("TEST3");
		buf[numbytes]='\0';  // String beenden
		//printf("TEST4");
		printf("Antwort : %s\n", buf);
		//printf("TEST5");
		fflush(stdout);
		close(remote_socket);
		
	}
konstantinopol вне форума Ответить с цитированием
Старый 24.01.2009, 01:15   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

поидее "/m" и 'm' разные вещи
counter вне форума Ответить с цитированием
Старый 24.01.2009, 03:24   #3
konstantinopol
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 14
По умолчанию

Я спрашиваю "m" на второй позиции тоесть(text[1]), т.к на первой позиции стоит "/".
А в if() я спрашиваю полную цепочку(char).
konstantinopol вне форума Ответить с цитированием
Старый 24.01.2009, 03:51   #4
konstantinopol
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 14
По умолчанию

Нашел в чём ошибка была.
В if() надо было написать :
Код:
if(strcmp(text,"/m")==0 || strcmp(text,"/b")==0 || strcmp(text,"/n")==0 || strcmp(text,"/l")==0 || strcmp(text,"/e")==0)
и так далее....
konstantinopol вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с помощью функции switch по C++ Many man Помощь студентам 9 02.09.2017 10:35
Оператор switch. IgorArhangel Помощь студентам 4 16.01.2009 01:53
Switch Division Общие вопросы C/C++ 3 11.01.2009 23:52
Диапазон оператора switch Иллидан Общие вопросы C/C++ 4 18.05.2008 00:10
Неправильная ссылка на скачивание nickki О форуме и сайтах клуба 2 01.04.2007 12:10