Как перевести число в char c
Перейти к содержимому

Как перевести число в char c

  • автор:

Как перевести из 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#

  • 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

Author24 — интернет-сервис помощи студентам

Всем привет! Мне нужно преобразовать число в строку. Использую 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; 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *