Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 409
#1

Как вывести символ по адресу scanf - C++

26.03.2014, 20:09. Просмотров 326. Ответов 9
Метки нет (Все метки)

Почему исключительная ситуация?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(){
 
    char* p;
    printf("Vvedite adress: ");
    scanf("%p",&p);
    printf("Po etomu adresu hranits9 zna4enie%p is %c\n", p, *p);
 
    char ch = getchar();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 20:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как вывести символ по адресу scanf (C++):

Символ между двумя числами в scanf - C++
Может кто-нибудь объяснить почему так не работает, а при добавлении числа работает: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Оператор scanf не считывает с клавиатуры русский символ 'а' - C++
#include &quot;stdafx.h&quot; #include &lt;locale&gt; #include &lt;Windows.h&gt; #include &lt;WinUser.h&gt; #include &lt;conio.h&gt; #define MAX_STR_LEN 300 ...

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» - C++
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в...

Найти ищет по имени и адресу номер телефона. Ссылка на неразрешенный внешний символ - C++
Делаю прогу которая ищет по имени и адресу номер телефона, но возникла ошибка. Никак не могу решить эту проблему. Ошибка 2 error...

как вывести символ квадрата? - C++
помогите, как вывести в консоль символ, который был бы похож на закрашенный квадрат? как например из таблицы символов, который я там...

Как вывести символ под s[i] - C++
Вмечно printf(&quot;-&quot;) надо вывести s. Как это сделать? #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; void main() { ...

9
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 20:38 #2
Какой адрес вводите?

Добавлено через 3 минуты
C++
1
2
3
4
5
6
    char ch = 'a';
    cout << (void*)&ch << endl;
    char* p;
    printf("Vvedite adress: ");
    scanf("%p",&p);
    printf("Po etomu adresu hranits9 zna4enie%p is %c\n", p, *p);
Введите адрес, который выводится во второй строке.
0
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 409
26.03.2014, 21:26  [ТС] #3
Введите адрес, который выводится во второй строке.
0024FEBF
что его ввести??
Ну a выводит !!
а зачем void

А почему исключительная ситуация во многих случаях?
0
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,367
Завершенные тесты: 1
26.03.2014, 21:43 #4
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
почему исключительная ситуация во многих случаях?
Надо вводить реальный адрес, который принадлежит адресному пространству программы.
В приведенном примере был введен адрес реальной переменной и программа сработала.
0
Evg
Эксперт CАвтор FAQ
17934 / 6162 / 409
Регистрация: 30.03.2009
Сообщений: 16,917
Записей в блоге: 27
26.03.2014, 21:46 #5
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Почему исключительная ситуация?
В современных ОС задачи работают в виртуальном адресном пространстве. Сие означает, что есть адреса, доступные для чтения и есть адреса, запрещённые для чтения. Если введёшь корректный адрес, то попадёшь в допустимую область и программа отработает нормально. В противном случае программа сломается на исполнении. Если ты предполагаешь, что таким образом можешь посмотреть всю физическую память, то ты ошибаешься.
0
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 409
26.03.2014, 21:46  [ТС] #6
Надо вводить реальный адрес, который принадлежит адресному пространству программы.
В приведенном примере был введен адрес реальной переменной и программа сработала.
ну это я понял, а void зачем здесь??
0
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,367
Завершенные тесты: 1
26.03.2014, 21:52 #7
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
а void зачем здесь
Иначе ch считалась бы текстовой строкой и вывелось бы ее значение, а не указатель.
0
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 409
26.03.2014, 21:59  [ТС] #8
Иначе ch считалась бы текстовой строкой и вывелось бы ее значение, а не указатель.
а так тогда почему не работает?
Что то не договариваете...
Код
    cout << (char*)&ch << endl;
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 22:06 #9
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
а так тогда почему не работает?
Масло масленное... Адрес char и так - указатель на char. cout, когда получает указатель на char для вывода, выводит строку, начиная с этого адреса и заканчивая '\0' (если это не строка (как в данном случае), то ищет 0 в памяти пока не найдёт, или пока не залезет куда не надо).
0
Evg
Эксперт CАвтор FAQ
17934 / 6162 / 409
Регистрация: 30.03.2009
Сообщений: 16,917
Записей в блоге: 27
26.03.2014, 23:50 #10
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
а так тогда почему не работает?
Что то не договариваете...
Код
    cout << (char*)&ch << endl;
Потому что printf работает со значениями, и для printf'а нет разницы, передавать ему void* и char*. "cout <<" работает с типами, для каждого отдельно взятого типа "cout <<" это по сути дела отдельная функция. "cout << void*" и "cout << char*" - это две разные функции, которые реализованы по разному: первая печатает значение указателя, вторая печатает строку, расположенную по указателю
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2014, 23:50
Привет! Вот еще темы с ответами:

Как вывести на экран третий символ строки? - C++
Как вывести на экран третий символ строки?

Как вывести символ в любое место экрана? - C++
Речь идёт о консольной программе. Поиск на форуме в этом отношении ничего не дал. Говорится о формах, о текстовых полях и иных...

Как вывести спец символ на экран и в файл - C++
Доброго времени суток.Решая задачу на парковку надо было вывести символы(в файл ну а для теста на экран) '/' '\' '.' .Проблема в томчто...

Не могу вывести unsigned char символ. Как исправить? - C++
Данна задача, при помощи массива сформировать структуру лабиринта, где в качестве стен используется символ 177, а в качестве прохода...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
26.03.2014, 23:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru