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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2012, 13:46   #1
eymar
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 17
По умолчанию Проблема с выводом

Здравствуйте! Возникла такая проблема: Мне необходимо в функции вывести на экран строку, программа компилируется без ошибок, но при попытке запуска выбивает сообщение :"Прекращена работа программы". Вот пример функции:

char ex(const char *p){
char st;
st=*p;
printf("String = %s", st);// если изменить %s на %c, тогда программа работает нормально, но выводит лишь первый символ
return 0;
}

P.S. Это C, не С++.

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

Код:
printf("String = %s", *p);
Зачем дополнительно переменку создавать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2012, 14:27   #3
eymar
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
printf("String = %s", *p);
Зачем дополнительно переменку создавать?
мне необходимо будет работать со значением параметра. Формальные параметр должен быть константой, потому ввел дополнительную переменную.
eymar вне форума Ответить с цитированием
Старый 23.09.2012, 14:48   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

У вас st один символ. Ему и присваивается 1 символ. Принтфу вы указали, что это строка... вот он и побежал по памяти в поисках конца, естественно, упал... вы другого ждали?
p51x вне форума Ответить с цитированием
Старый 23.09.2012, 15:41   #5
eymar
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
У вас st один символ. Ему и присваивается 1 символ. Принтфу вы указали, что это строка... вот он и побежал по памяти в поисках конца, естественно, упал... вы другого ждали?
А разве st и p не строки?
eymar вне форума Ответить с цитированием
Старый 23.09.2012, 15:52   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

p - строка (фактически указатель на первый символ), st - просто символ. Запись st = *p записывает в st первый символ из строки p. Если хотите со второй переменной, то нужно так:
Код:
char ex(const char *p){
const char * st = p;
printf("String = %s", st);
return 0;
}
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 23.09.2012, 22:50   #7
eymar
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 17
По умолчанию

спасибо, большое!
eymar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с выводом звука JekaDefer Мультимедиа в Delphi 7 10.07.2012 01:44
проблема с выводом -=Andriushka=- Помощь студентам 0 13.04.2011 21:46
Проблема с выводом даты se0808 PHP 3 19.02.2011 16:57
Класс. Проблема с выводом. zhenya.ya Общие вопросы C/C++ 6 19.09.2010 16:26
проблема с вводом/выводом revan-8 Общие вопросы C/C++ 10 09.07.2009 20:54