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

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

Войти
Регистрация
Восстановить пароль
 
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
#1

Записать число в ячейку char - C++

02.04.2013, 22:07. Просмотров 858. Ответов 14
Метки нет (Все метки)

Здравствуйте.
Столкнулся со странной проблемой.

Нужно в ячейку str[0] записать некоторое число int.

Такой код работает:
C
1
2
char str[128];
str[0]=123;
А такой - не работает:
C
1
2
3
char str[128];
int I=123;
str[0]=I;
Почему? Как в ячейку char записать значение из переменной?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2013, 22:07     Записать число в ячейку char
Посмотрите здесь:

char в число C++
C++ Ввести число с клавиатуры, потом записать это число в текстовой файл
Как строки с шестнадцатеричным содержимым записать в биты char? C++
C++ Как записать Short в два char'a?
C++ Разбить число на цифры, каждую цифру записать в ячейку массива
записать по-битого один short int в два char C++
C++ Как в выделенную память записать поочередно число int, массив char[n], и еще число int
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
02.04.2013, 22:24     Записать число в ячейку char #2
А какую ошибку пишет?
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
02.04.2013, 22:28     Записать число в ячейку char #3
C++
1
2
3
char str[128];
int I=123;
str[0]=char(I);
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
02.04.2013, 22:31  [ТС]     Записать число в ячейку char #4
C
1
2
3
char str[128];
int I=123;
str[0]=I;
Ошибок не выдает, просто записывает в ячейку значение -38.

Добавлено через 2 минуты
Цитата Сообщение от SERUYBKR Посмотреть сообщение
C++
1
2
3
char str[128];
int I=123;
str[0]=char(I);
Ошибка 3: error C2059: синтаксическая ошибка: тип
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
02.04.2013, 22:33     Записать число в ячейку char #5
jen941, а чего ты ожидаешь? int это же не char.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
02.04.2013, 22:36     Записать число в ячейку char #6
C++
1
str[0]=char(I);
Так тоже работает, преобразование из int в char - стандартное, с возможной потерей данных
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
02.04.2013, 22:36  [ТС]     Записать число в ячейку char #7
Смысл в том, что нужно положить в ячейку число.
Можно же записать его туда строкой:
C
1
str[0]=123;
А с переменной так не работает.
ViktorKozlov, возможно, у нас разные компиляторы, но это нужно сделать именно в VS2010...
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
02.04.2013, 22:41     Записать число в ячейку char #8
Странно.. У меня на VS 2008 все работает
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
02.04.2013, 22:43  [ТС]     Записать число в ячейку char #9
Понял ошибку, нужно было написать
C
1
str[0]=(char)(I);
Но все равно записывается -38
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
02.04.2013, 22:43     Записать число в ячейку char #10
C++
1
itoa()
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
02.04.2013, 22:45     Записать число в ячейку char #11
Цитата Сообщение от jen941 Посмотреть сообщение
Но все равно записывается -38
А как вы это проверяете?
palva
2508 / 1730 / 229
Регистрация: 08.06.2007
Сообщений: 6,787
Записей в блоге: 4
02.04.2013, 22:50     Записать число в ячейку char #12
char это по сути восьмибитный int. Его диапазон -128...127.
Можно объявить unsigned char, это восьмибитный unsigned int с диапазоном 0..255.
Если записывать туда большее число, то запишется младший бит, но компилятор, обычно, выдает предупреждение. По сути это переполнение разрядной сетки. Чтобы в char образовалось число -38 туда достаточно записать 218.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
#include <stdio.h>
void main()
{
    char c;
    c=218;
    printf("%d'n",c); // -38
}
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
02.04.2013, 22:53     Записать число в ячейку char #13
C++
1
2
3
4
5
6
char str[128];
int I=123;
 
itoa(I, str, 10);
 
std::cout << str[0] << str[1] << str[2] << std::endl;
Croessmah
02.04.2013, 22:55
  #14

Не по теме:

itoa() - не стандартная функция.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 23:03     Записать число в ячейку char
Еще ссылки по теме:

Как записать char массив в конструкторе C++
Как записать значение типа double в char? C++
C++ Как записать и прочитать int (4 byte) из char[]
Перемещение массива типа char в соседнюю ячейку C++
C++ Как char записать в структуры?

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

Или воспользуйтесь поиском по форуму:
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
02.04.2013, 23:03  [ТС]     Записать число в ячейку char #15
Разобрался, нужно использовать тип unsigned char.
Всем спасибо за помощь
Yandex
Объявления
02.04.2013, 23:03     Записать число в ячейку char
Ответ Создать тему
Опции темы

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