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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2010, 09:38   #1
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию Illegal Instruction

Прошу прощения если тема уже была, я честно искал и не нашел.
Столкнулся с неизвестной, нелогичной для меня проблемой.
Объясню на коде:
Код:
if(requestMethod==GET)
        str = string(getenv("QUERY_STRING")); else//Пробовал разными способами, но все равно ошибка ниже
....
printf("%s\n",str.c_str());//Все ОК.
printf("%s\n",str);//Выдает Illegal Instruction.
Ниже был кусок программы:
Код:
map<string, string> request;
....
for(map<string, string>::iterator j = request.begin(); j != request.end(); j++)//Illegal Instruction
       printf("%s:%s\n", (*j).first, (*j).second);
Пришлось менять на:
Код:
map<char*, char*> request;
for(map<char*, char*>::iterator j = request.begin(); j != request.end(); j++)
       printf("%s:%s\n", (*j).first, (*j).second);
Помогите разобраться с этой проблемой. Компилятор GNU GCC, ОС Linux.
Заранее благодарен.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 04.11.2010, 09:53   #2
sergey.d
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 98
По умолчанию

Вводим в консоли
Код:
man 3 printf
читаем в частности:
Цитата:
s If no l modifier is present: The const char * argument is expected to be a pointer to
an array of character
type (pointer to a string). Characters from the array are writ‐
ten up to (but not including) a terminating null byte ('\0'); if a precision is speci‐
fied, no more than the number specified are written. If a precision is given, no null
byte need be present; if the precision is not specified, or is greater than the size of
the array, the array must contain a terminating null byte.
Функция-член c_str() класса string как раз и возвращает указатель типа const char * на содержимое строки.

Последний раз редактировалось sergey.d; 04.11.2010 в 09:59.
sergey.d вне форума Ответить с цитированием
Старый 04.11.2010, 10:04   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Спасибо большое, я на это в принципе и подумал.
Спасибо ещё раз.
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 04.11.2010 в 10:07.
russian-stalker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DLL. Project *.exe faulted with message: 'priveleg instruction at 0x...'. Proccess stopped. TwiX Общие вопросы Delphi 2 26.12.2009 14:34
Illegal assignment mmx358 Паскаль, Turbo Pascal, PascalABC.NET 7 08.08.2009 15:22
ERROR:Illegal indexing mode IgorKr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.12.2008 23:54
Illegal mix of collations VasyaVasin PHP 1 27.12.2007 08:00