Числа в массиве перевести в строку - C (СИ)
Формулировка задачи:
Дан массив чисел (1,0,1,1,0,1,0,1) из него надо получить строку.
Смысл всей задумки: Из функции, которая переводит десятичное число в двоичное (двоичное число сохраняется в массиве) массив чисел перевести в массив со строкой и получившийся результ передать в программу.
программа по переводу дес в двоич уже есть
Если есть другие способы то и они приветствуются.
Решение задачи: «Числа в массиве перевести в строку»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { unsigned a[] = {1,0,0,1,0,0,0,1,0,1}; unsigned cnt = sizeof(a)/sizeof(*a), i; char *string = calloc(sizeof(char), cnt + 1); if (string) { for (i = 0; i < cnt; ++i) { string[i] = '0' + a[i]; } puts(string); free(string); } }
Объяснение кода листинга программы
В этом коде:
- Объявлен массив
a
типаunsigned
с десятью элементами, инициализированными значениями1
,0
,0
,1
,0
,0
,0
,1
,0
,1
. - Вычислено значение переменной
cnt
как результата деления размера массиваa
на размер одного элемента*a
. Значениеcnt
представляет собой количество элементов в массивеa
. - Выделена память под строку
string
с помощью функцииcalloc
. Память выделена дляcnt + 1
символов, включая завершающий нулевой символ. - Если память успешно выделена, то в цикле
for
производится перевод чисел в массивеa
в соответствующие символы в строкеstring
. В каждой итерации к символу '0' добавляется значение соответствующего элемента массиваa
. - Полученная строка выводится на экран с помощью функции
puts
. - Выделенная память освобождается с помощью функции
free
. - Если память под
string
не выделена, то выводится сообщение об ошибке и программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д