Преобразование двоичного кода в символы (Си) - 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;
}

Объяснение кода листинга программы

В этом коде происходит преобразование двоичного кода в символы. Вот список шагов, описывающих работу программы:

  1. Включаются необходимые заголовочные файлы
  2. Определяется символ-разделитель, в данном случае пробел
  3. Создаются две переменные: буфер для чтения строки и массив символов
  4. Последний символ массива устанавливается в символ конца строки
  5. Инициализируется счётчик для цикла
  6. В цикле происходит чтение строки из стандартного ввода
  7. Если строка пустая, то цикл прекращается
  8. В цикле происходит обработка каждого символа строки
  9. Если текущий символ является разделителем, то двоичный код преобразуется в символ и выводится на экран
  10. Если текущий символ не является разделителем, то он добавляется в массив символов
  11. После обработки строки, программа возвращает 0, что означает успешное завершение работы.

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы