Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 38
1

Вывести с помощью printf переменную типа char*

30.03.2015, 22:24. Просмотров 1890. Ответов 9
Метки нет (Все метки)

Добрый день!
Подскажите: есть переменная "message" типа char*
Если пишу:
C++
1
printf("\n%*d %c ", offset--, (char*)message, i ? '+' : '\n');
то вместо значения переменной выдаёт большую чиселку, но если написать просто
C++
1
printf(message);
то выдает всё верно.
Что не верно в первой попытке?


Если быть точнее: у меня есть переменная "strnum" типа char[100]: char[0] = 1; char[1] = 2; char[3] = \0;
Чтобы вывести значение в printf я делаю:
C++
1
2
3
4
std::string s;
s = (const char*) strnum;
char* message = (char *)  s.c_str();
printf("\n%*d %c ", offset--, (char*)message, i ? '+' : '\n');
но всё равно не выходит
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2015, 22:24
Ответы с готовыми решениями:

Переменную типа string вывести в printf?
как в переменную типа string вывести в printf? #include <stdio.h> // для...

Есть переменная типа char содержащая цифру; как записать это значение в переменную типа int?
Пожалуйста, напомните стандартную функцию

Очистить переменную типа char *
Привет. Тупит код: char *rt; int port=4; rt="COM"; char temp1;...

Не могу обнулить переменную типа char
Доброго времени суток, помогите обнулить переменную, т.к. мой компилятор...

Ввод символов в переменную типа char
Почему после ввода больше 1-го символа выбивает default? #include <iostream>...

9
Байт
Эксперт C
18944 / 12160 / 2538
Регистрация: 24.12.2010
Сообщений: 24,762
30.03.2015, 22:31 2
Формат "%s"
0
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 38
31.03.2015, 07:45  [ТС] 3
и
C++
1
printf("\n%*d %s ", offset--, (char*)message, i ? '+' : '\n');
и
C++
1
printf("\n%*d %s ", offset--, message, i ? '+' : '\n');
выдаёт фатальную ошибку (при компиляции всё норм, но на строчке программа отваливается)

Добавлено через 8 часов 17 минут
=(((
0
ValeryS
Модератор
7315 / 5558 / 704
Регистрация: 14.02.2011
Сообщений: 18,846
31.03.2015, 07:59 4
Цитата Сообщение от Dream_O Посмотреть сообщение
выдаёт фатальную ошибку
интересно, а что ожидалось?
Цитата Сообщение от Dream_O Посмотреть сообщение
printf("\n%*d %s ", offset--, message, i ? '+' : '\n');
ожидается два параметра %*d( кстати почему звездочка?) и %s
а передается три offset--, message и i ? '+' : '\n'
может все таки
C
1
printf("\n%d %s%c", offset--, message, i ? '+' : '\n');
0
Байт
Эксперт C
18944 / 12160 / 2538
Регистрация: 24.12.2010
Сообщений: 24,762
31.03.2015, 09:59 5
Лучший ответ Сообщение было отмечено Dream_O как решение

Решение

Формат со звездочкой ожидает 2 параметра. Спецификацию и что именно печатать
printf("%*d", w, n) напечатает число n в поле шириной w. (w здесь играет роль спецификации ширины)
printf("%*.*f", w, p, dd) напечатает число dd в поле шириной w с p знаками после точки (тут, кстати, ожидание 3-х параметров!)
printf("%*s", off, message) напечатает символьную переменную message в поле шириной off
У ТС явное несоответствие форматов и переменных, что как правило приводит к фатальным ошибкам или к выводу ахинеи.
2
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 38
31.03.2015, 20:32  [ТС] 6
Огромное спасибо за помощь!
Вот так нужно было:
C++
1
printf("\n%*s %c", offset--, message, i ? '+' : '\n');
Добавлено через 2 часа 51 минуту
Сейчас возникла новая проблема: если переменная char[256] большая (к примеру 36 символов), то printf эту строку не выводит (ошибки нет, просто ничего не делает).
C++
1
printf("\n %s\n\n\n", tmpnum);
При размере в 20 символов проблемы нет.
0
nmcf
6401 / 5663 / 2580
Регистрация: 14.04.2014
Сообщений: 23,964
31.03.2015, 20:36 7
Что в строке? Может там спецсимволы есть?
0
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 38
31.03.2015, 20:39  [ТС] 8
Проблема решена. В нулевой ячейке стоял \0
0
nmcf
6401 / 5663 / 2580
Регистрация: 14.04.2014
Сообщений: 23,964
31.03.2015, 20:59 9
Ну вот, как я и сказал.
0
Evg
Эксперт CАвтор FAQ
19305 / 7159 / 533
Регистрация: 30.03.2009
Сообщений: 20,036
Записей в блоге: 30
31.03.2015, 22:46 10
На всякий случай свалка с примерами
http://www.cyberforum.ru/blogs/18334/blog507.html
1
31.03.2015, 22:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2015, 22:46

Как сравнить переменную типа char
нужно найти элементы типа char различные от нуля, программу я написал, а вот не...

Занести число в переменную, типа char
char a; cin>>a; a=3; Тут при чтении с клавы мы считываем символ , т.е....

Передать переменную типа char по ссылке
доброго времени суток. помогите над очень простым задание из одной книги. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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