Преобразование двоичного кода в символы (Си) - C (СИ)
Формулировка задачи:
Добрый день!
Имеется код, переводящий двоичный код в символы, однако работает он только если на вход был дан двоичный код одного символа. Как изменить код так, чтобы прога выводила целые слова и предложения? При этом нельзя включать string.h в исходник.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
char myChar;
char in[255];
fgets(in, sizeof(in), stdin);
myChar = strtol(in, 0, 2);
printf("%c\n", myChar );
}Решение задачи: «Преобразование двоичного кода в символы (Си)»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#define DELIM ' '
int main(void)
{
char *ptr, buf[BUFSIZ], ch[9];
ch[8]='\0';
int i = 0;
while( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf!='\n')
for (ptr=buf, i=0; *ptr; ptr++){
if (i == 8) {
printf("%c", (char)strtol(ch, 0, 2));
i = 0;
}
if (*ptr != DELIM)
ch[i++] = *ptr;
}
return 0;
}
Объяснение кода листинга программы
В этом коде происходит преобразование двоичного кода в символы. Вот список шагов, описывающих работу программы:
- Включаются необходимые заголовочные файлы
- Определяется символ-разделитель, в данном случае пробел
- Создаются две переменные: буфер для чтения строки и массив символов
- Последний символ массива устанавливается в символ конца строки
- Инициализируется счётчик для цикла
- В цикле происходит чтение строки из стандартного ввода
- Если строка пустая, то цикл прекращается
- В цикле происходит обработка каждого символа строки
- Если текущий символ является разделителем, то двоичный код преобразуется в символ и выводится на экран
- Если текущий символ не является разделителем, то он добавляется в массив символов
- После обработки строки, программа возвращает 0, что означает успешное завершение работы.