Как перевести из int в char в СИ?
Добрый день. Хочу вывести в putchar число, но putchar выводит только строковые переменные. Как мне перевести в строковую мою числовую переменную?
- Вопрос задан более трёх лет назад
- 7042 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 3
Если прямо ответить на вопрос, то в предположении, что вы спутали только символы и строки, вот так
int i=5; putchar ('0'+i);
но подозреваю, что нужно на самом деле совсем не это, т.к. спутали вы скорей всего больше, чем только символы и строки.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Программист, встраиваемые системы
putchar записывает в выходной поток только 1 символ.
Наверное, вам нужно на самом деле это:
printf(«%d\n», i);
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
int i = 97;
char a = i;
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C#
- +2 ещё
Почему возникает ошибка Fatal error. System.Runtime.InteropServices.SEHException?
- 1 подписчик
- 15 янв.
- 58 просмотров
Developing.ru
На Win32 тип int имеет размер 4 байта, а char — 1 байт. Таким образом «честное» преобразование int в char невозможно. Возможно лишь преобразование с усечением (truncation). Самое распространенное усечение — это отбрасование старших байт. Как это сделать продемонстировал IceFlame.
Entites should not be multiplied beyond necessity @ William Occam
—
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
—
Сообщение «Спасибо» малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой «Reputation» в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
dmitry1208197320 Сообщения: 16 Зарегистрирован: 13 янв 2010, 17:48
Спасибо за ответ!
eqltv Сообщения: 6 Зарегистрирован: 05 фев 2010, 14:22
IceFlame писал(а): Ну, например,
int a; char b; b = (char) a;
Это язык си, а вопрос был про C++. В плюсах лучше писать так:
b = char(a);
или еще лучше (понятнее)
b = static_cast(a);
dmitry1208197320 Сообщения: 16 Зарегистрирован: 13 янв 2010, 17:48
спасибо, учту
BulldozerBSG Сообщения: 263 Зарегистрирован: 09 янв 2010, 04:14 Контактная информация:
eqltv писал(а): Это язык си, а вопрос был про C++. В плюсах лучше писать так:
b = char(a);
или еще лучше (понятнее)
b = static_cast(a);
А не одна ли малина, или компилятор код разный генерирует?
Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:
BulldozerBSG, ну если начинать говорить о С++ преобразованиях типов, то это целая отдельная и очень интересная тема со своей собственной философией. Можем обсудить все тонкости, если хочешь. или если кто-нибудь из посетителей хочет
Будет ли сгенерирован другой код? Для static_cast не будет. Однако static_cast более безопасен, так как помимо преобразования как такового, на этапе компиляции он дополнительно осуществляет валидацию правильности преобразования. Любой тип скастить в либой тип с помощью static_cast нельзя: в случае несоответствия будет выдана ошибка компиляции.
Entites should not be multiplied beyond necessity @ William Occam
—
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
—
Сообщение «Спасибо» малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой «Reputation» в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
GeorgeSoca Сообщения: 0 Зарегистрирован: 12 окт 2015, 04:09 Откуда: Guam Контактная информация:
На нашем сайте вы можете чувствовать себя в безопасности! Кроме того, мы используем зеркальные жесткие диски на все наши серверы, поэтому мы также взять резервную два раза в день на отдельных серверах. Мы используем ISPmanager, как на панели управления. ISPmanager является панель управления, которая позволяет легко управлять своей веб-сайт. С нами вы можете разместить столько веб-сайты и домены, которые вы хотите для учетной записи хостинга.
virtual hosting
9 сообщений • Страница 1 из 1
- Системное и прикладное программирование
- ↳ Win API, Shell..
- ↳ C и C++
- ↳ Delphi и Pascal
- ↳ Программирование на Pascal и Delphi (Object Pascal)
- ↳ Все вопросы ООП
- ↳ Компоненты в Delphi
- ↳ Delphi и WinAPI, ActiveX и OLE , COM и DCOM, и т.д
- ↳ Java
- ↳ MS Office и VB(A).
- ↳ Ассемблер
- WEB программирование
- ↳ JScript, VBScript, DHTML.
- ↳ Perl, PHP, ASP .
- Некатегоризированное
- ↳ Вопрошайка
- ↳ SQL
- ↳ Алгоритмы
- ↳ Дизайн и графика
- Администрирование
- ↳ Apache, IIS.
- ↳ Операционные системы
- Работа
- ↳ Вакансии и заказы для программистов
- ↳ Поиск работы и заказов.
- ↳ Решите мне задачку
- ↳ задачи на Паскале и Delphi
- ↳ задачи на C и C++
- ↳ задачи на Basic и Visual Basic (VB)
- Прочее
- ↳ Жалобная книга
- ↳ Флейм.
Преобразование int в char

Всем привет! Мне нужно преобразовать число в строку. Использую sprintf() всё работает, НО переменная получает не значение, а ссылку на это значение, а т.к. sprintf() у меня в цикле, то в итоге в массиве все элементы имеют одинаковое значение (последнее преобразованное число). Уже целый день вожусь с этой проблемой. Что нужно сделать, чтобы переменная получала не ссылку, а значение по ссылке?
1 2 3 4 5 6 7 8 9 10 11
char *values[50]; char buffer[1]; int a = 5, b = 10; sprintf(buffer,"%d",a); values[0] = buffer; sprintf(buffer,"%d",b); values[1] = buffer; //и тот и другой элемент массива имеют одинаковое значение - 10
Сильно не бейте, я новичок в Си, да и нужен он мне только для написания программы к сессии, так что вдаваться во все подробности нет никакого смысла и желания.
| Здесь вы можете заказать любую студенческую или школьную работу. |
некорректный перевод из int в char
Очень тупой вопрос, но не могу нормальный результат получить. Нужно перевести числа из диапазона 10 .. 99 (числа хранятся в int ) в char . В итоге должна быть строка из чисел данного диапазона, которая потом будет записана в файл. Конструкции типа:
int a = 65; char ch = 65;
int a = 65; char ch = (char)a;
не работают (в строке — ASCII символы). Заранее спасибо.
Отслеживать
задан 29 ноя 2017 в 9:15
486 1 1 золотой знак 3 3 серебряных знака 16 16 бронзовых знаков
В смысле не работают? Перевод целого типа в другой целый тип — одно, а перевод любого целого типа в строку — совсем другое. Используйте sprintf() к примеру.
29 ноя 2017 в 9:25
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Раз вам нужно переводить многозначные числа, просто в char их не перевести, только в строку (массив char ).
Раз вы работаете в C, то просто выделяйте память под строку и используйте sprintf (или безопасные аналоги):
char s[20]; // Для двузначного хватит и s[3] - не забываем о нулевом символе sprintf(s,"%d",a);
Вариант с itoa плох тем, что это — нестандартная функция.
Для конкретно двузначных чисел можно и свой код написать:
char s[3] = ; // Чтоб занулить завершающий символ s[0] = '0' + a/10; s[1] = '0' + a%10;