Числа в массиве перевести в строку - 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не выделена, то выводится сообщение об ошибке и программа завершается.