Преобразование слов в двоичные значения

#c #string #binary

#c #строка #двоичный

Вопрос:

Мне нужно преобразовать слова в двоичные числа, расположенные вертикально (n). Мне нужно написать функцию, которая будет выполнять это преобразование.. Ниже приведен пример.. Не могли бы вы мне помочь, пожалуйста?

 //main
char* text = "Hello, how are you?";
const int len = strlen(text);
bool bytes1[len 1][8];
encode_string(text, bytes1);
for(int j = 0; j <= len; j  ){
    printf("%c: ", text[j]);
    for(int i = 0; i < 8; i  ){
        printf("%d", bytes1[j][i]);
    }
    printf("n");
}
// prints:
// H: 01001000
// e: 01100101
// l: 01101100
// l: 01101100
// o: 01101111
// ,: 00101100
//  : 00100000
// h: 01101000
// o: 01101111
// w: 01110111
//  : 00100000
// a: 01100001
// r: 01110010
// e: 01100101
//  : 00100000
// y: 01111001
// o: 01101111
// u: 01110101
// ?: 00111111
// : 00000000

//function
void encode_string(const char string[], bool bytes[strlen(string) 1][8]){

}
 

Комментарии:

1. Что насчет вашего кода не работает?

2. Что касается комментариев в предыдущем ответе ниже: » Хорошо, но программы будут работать с этим образцом (в основном введенном): …, и у меня есть эти ошибки» . Я предлагаю выполнить часть работы самостоятельно … и получить отладчик.

Ответ №1:

Привет, чувак, ты можешь использовать это:

Преобразование каждого символа:

 #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>


int main(void){

    char* text = "Hello, how are you?";
    int len_size = strlen(text);

    for(int j = 0; j <= len_size; j  ){
        printf("%c: ", text[j]);
        for( int i = 7; i >= 0; i-- ) {
            printf( "%d", ( text[j] >> i ) amp; 1 ? 1 : 0 );
        }
        printf("n");
    }

    return 0;
}
 

О другом варианте с вашей функцией:

 #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

void encode_string(char string[], int len_size);

int main(void){

    char* text = "Hello, how are you?";
    int len_size = strlen(text);
    encode_string(text, len_size);
    return 0;
}

void encode_string(char string[], int len_size){
    for(int j = 0; j <= len_size; j  ){
        printf("%c: ", string[j]);
        for( int i = 7; i >= 0; i-- ) {
            printf( "%d", ( string[j] >> i ) amp; 1 ? 1 : 0 );
        }
        printf("n");
    }
}
 

введите описание изображения здесь

Я уже знаю вашу ошибку, вы пытаетесь отправить в функцию, и вы не отправляете правильные параметры…

Комментарии:

1. @OnlyForFun Это работает для меня, я буду индексировать печать

2. @OnlyForFun Вы пытаетесь так назначить функцию mblen , и вы этого не хотите, поэтому используйте размер строки! Это сработает, затем отметьте вопрос зеленой галочкой, чтобы люди не теряли больше времени на решение этого вопроса

3. я скопировал ваш код, и у меня есть эта ошибка 1, посмотрите ниже: qr.c: In function ‘encode_string’: qr.c:76:21: error: ‘len’ undeclared (first use in this function); did you mean ‘mblen’? 76 | for(int j = 0; j <= len; j ){ | ^~~ | mblen qr.c:76:21: note: each undeclared identifier is reported only once for each function it appears экран: ibb.co/n3yFk4m

4. @OnlyForFun Правильно ли вы его объявили отправьте распечатку своего кода! Как вы делали из своей оболочки

5. @OnlyForFun Или, если вы хотите, можете отправить весь свой код сюда: codeshare. ввод -вывод и нажмите поделиться, затем отправьте мне ссылку, я это исправлю! Я думаю, что это глупая проблема, возможно, неправильное объявление функции / переменной.