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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.04.2011, 16:49   #1
XxXGhosTXxX
Пользователь
 
Аватар для XxXGhosTXxX
 
Регистрация: 03.03.2011
Сообщений: 93
По умолчанию error C2105: '--' needs l-value

Здраствуйте.
Я саздал программу, который будет из текста уменшить 1 символ.
Но есть одну ошибку

error C2105: '--' needs l-value

Чем проблема, вот ето код. Заранее спасибо.

Код:
#include <conio.h>
#include <windows.h>
#include <iostream.h>
#include <string.h>
int main ()
{
	char a[100];
	cout<<"Write Text: ";
	cin.getline (a,100);
	a--;
	cout<<a;
	return 0;
}
XxXGhosTXxX вне форума
Старый 02.04.2011, 16:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Оператор -- со строками не работает.
I'm learning to live...
Stilet вне форума
Старый 02.04.2011, 16:59   #3
XxXGhosTXxX
Пользователь
 
Аватар для XxXGhosTXxX
 
Регистрация: 03.03.2011
Сообщений: 93
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Оператор -- со строками не работает.
Вы имели в виду это?

a--
XxXGhosTXxX вне форума
Старый 02.04.2011, 17:00   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Указатель на массив является rvalue; если вам надо проделать такую операцию, используйте дин память:
Код:
#include <iostream.h>

int main()
{
      char *pstr = new char[100];
      cout << "Input a text:   ";
      cin.getline(pstr, 100);
      pstr--; // Run Time Error
      cout << pstr; // Первый символ - мусор

      delete [] ++pstr;
      return 0;
}
А только зачем эта вакханалия идиотизма нужна?

Если вам надо просто не печатать последний символ, то сделайте так:
Код:
#include <conio.h>
#include <windows.h>
#include <iostream.h>
#include <string.h>
int main ()
{
	char a[100];
	cout<<"Write Text: ";
	cin.getline (a,100);
	//a--;
	int len = strlen(a);
	if(len)
		a[len-1] = '\0';
	cout<<a;
	return 0;
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Stilet; 02.04.2011 в 17:11.
Syuf вне форума
Старый 02.04.2011, 17:06   #5
XxXGhosTXxX
Пользователь
 
Аватар для XxXGhosTXxX
 
Регистрация: 03.03.2011
Сообщений: 93
По умолчанию

Указатель на массив является rvalue; если вам надо проделать такую операцию, используйте дин память:
Код:
#include <iostream.h>

int main()
{
      char *pstr = new char[100];
      cout << "Input a text:   ";
      cin.getline(pstr, 100);
      pstr--; // Run Time Error
      cout << pstr; // Первый символ - мусор

      delete [] ++pstr;
      return 0;
}
Цитата:
А только зачем эта вакханалия идиотизма нужна?
Просто нужно инструкциа.


Не работал брат.Дебугинг без проблем, но прог. не работает точно.

Последний раз редактировалось Stilet; 02.04.2011 в 17:11.
XxXGhosTXxX вне форума
Старый 02.04.2011, 17:11   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вы имели в виду это?
Именно. Если бы это был указатель тогда еще куда ни шло, хотя все равно была бы ерунда.
Цитата:
Просто нужно инструкциа.
Чего нужно???
I'm learning to live...
Stilet вне форума
Старый 02.04.2011, 17:13   #7
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
не работает точно.
Гениально. Там в комментариях именно это и написано.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума
Старый 02.04.2011, 17:15   #8
XxXGhosTXxX
Пользователь
 
Аватар для XxXGhosTXxX
 
Регистрация: 03.03.2011
Сообщений: 93
По умолчанию

Я хочу, чтобы например я пишу а, он будет писат g, как ето делать?
XxXGhosTXxX вне форума
Старый 02.04.2011, 17:21   #9
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Фело джан обьясни мне по-армянски что ты хочешь, я переведу.
Syuf что это значит '\0',всмысле а[len - 1] нету?

Последний раз редактировалось Акоб; 02.04.2011 в 17:25.
Акоб вне форума
Старый 02.04.2011, 17:25   #10
XxXGhosTXxX
Пользователь
 
Аватар для XxXGhosTXxX
 
Регистрация: 03.03.2011
Сообщений: 93
По умолчанию

Цитата:
Сообщение от Акоб Посмотреть сообщение
Фело джан обьясни мне по-армянски что ты хочешь, я переведу.
Syuf что это значит '\0',всмысле а[len - 1] нету?
Barev Hakob jan, ap guzem, or koski grem a, inq@ @nci cout ene g, qanim tar araj qce.

Последний раз редактировалось XxXGhosTXxX; 02.04.2011 в 17:27.
XxXGhosTXxX вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Периодическая ошибка Run-time error -2147417848 (80010108) Automation error в файле с макросом faraviper Microsoft Office Excel 0 24.02.2011 16:23
классы - Error 3 error C2228: left of '.BlockAll' must have class/struct/union c:\documents and settings\ Dimarik Visual C++ 1 08.02.2011 15:16
Ищу причину ошибки: Error in loading DLL, она же Error 48. hozpraktik Microsoft Office Excel 1 19.11.2009 12:39
Как решить проблему с Error in loading DLL (Error 48)? Klim Bassenger Microsoft Office Excel 4 23.10.2009 13:44