Преобразование int в char - C (СИ)
Формулировка задачи:
Всем привет! Мне нужно преобразовать число в строку. Использую sprintf() всё работает, НО переменная получает не значение, а ссылку на это значение, а т.к. sprintf() у меня в цикле, то в итоге в массиве все элементы имеют одинаковое значение (последнее преобразованное число). Уже целый день вожусь с этой проблемой. Что нужно сделать, чтобы переменная получала не ссылку, а значение по ссылке?
Сильно не бейте, я новичок в Си, да и нужен он мне только для написания программы к сессии, так что вдаваться во все подробности нет никакого смысла и желания.
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»
textual
Листинг программы
/* 50 элементов по 15+1 символов. Хотя на один элемент в крайнем случае * будет достаточно и 11 символов + завершающий ноль. Но для круглого * числа пусть будет 16 */ char values[50][16]; ... int a, b, c; ... sprintf (buf[0], "%d", a); sprintf (buf[1], "%d", b); sprintf (buf[2], "%d", c); ...
Объяснение кода листинга программы
- В коде определен массив
values
размером 50х16, который будет использоваться для хранения значений. - Далее, определены три переменные типа
int
-a
,b
иc
. - С помощью функции
sprintf
значения переменныхa
,b
иc
преобразуются в строки и записываются в соответствующие элементы массиваbuf
. При этом, каждый элемент массиваbuf
представляет собой строку, которая может содержать до 15 символов, включая завершающий ноль. - Таким образом, в результате выполнения кода в массиве
buf
будут храниться строковые представления переменныхa
,b
иc
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д