Преобразование чисел из файла в двоичную запись - PullRequest
0 голосов
/ 16 октября 2018

У меня есть программа для преобразования чисел от 0 до 255 в двоичную запись с использованием пробелов и звездочек.Я хочу использовать его для преобразования чисел из файла .txt в двоичную запись, что-то вроде этого:

./binary < binaryData.txt
 60:   ****
 66:  *    *
128: *
...

Как мне это сделать?

Это код, который я 'до сих пор, но он не вводит:

int main(void) {
    int a, b, c, d, e, f, g, h;

    int v = 0;
    //printf("%d: ", v);

    for (a = 0; a < 2; a++) {
        for (b = 0; b < 2; b++) {
            for (c = 0; c < 2; c++) {
                for (d = 0; d < 2; d++) {
                    for (e = 0; e < 2; e++) {
                        for (f = 0; f < 2; f++) {
                            for (g = 0; g < 2; g++) {
                                for (h = 0; h < 2; h++) {
                                    printf("%3d: ", v);

                                    if (a) printf("*");
                                    else printf(" ");

                                    if (b) printf("*");
                                    else printf(" ");

                                    if (c) printf("*");
                                    else printf(" ");

                                    if (d) printf("*");
                                    else printf(" ");

                                    if (e) printf("*");
                                    else printf(" ");

                                    if (f) printf("*");
                                    else printf(" ");

                                    if (g) printf("*");
                                    else printf(" ");

                                    if (h) printf("*");
                                    else printf(" ");

                                    printf("\n");
                                    v++;
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    return 0;
}

1 Ответ

0 голосов
/ 16 октября 2018

Вам нужно будет использовать scanf(), чтобы получить числа в качестве входных данных, а затем распечатать их двоичное представление.Продолжайте сканирование до тех пор, пока scanf() не вернет EOF, что означает, что вы достигли конца ввода.

Вот что вы ищете:

#include <stdio.h>

int main(void) {
    int i;

    while (scanf("%d", &i) != EOF) {
        printf("%3d: ", i);
        printf(i & 128 ? "*" : " ");
        printf(i &  64 ? "*" : " ");
        printf(i &  32 ? "*" : " ");
        printf(i &  16 ? "*" : " ");
        printf(i &   8 ? "*" : " ");
        printf(i &   4 ? "*" : " ");
        printf(i &   2 ? "*" : " ");
        printf(i &   1 ? "*" : " ");
        printf("\n");
    }

    return 0;
}

После компиляции вызовитепрограмма из оболочки выглядит так:

./program < data.txt

Пример входного файла data.txt:

234
2
221
24
89
22

Вывод:

234: *** * * 
  2:       * 
221: ** *** *
 24:    **   
 89:  * **  *
 22:    * ** 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...