C: Как использовать sizeof, чтобы разделить символ? - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть массив символов, который я хочу разделить на каждые 16 байтов. Как это делается в C? Цель состоит в том, чтобы заменить каждый байт в 16 байтах чем-то другим.

Я уже реализовал функцию подстановки, поэтому мне просто нужно использовать ее для каждых 16 байтов. В псевдокоде:

      void sub(unsigned char* s){

                for (int i = 0; i < 16; i++)
                {
                    state[i] = S[state[i]]; //S[] is a char array (S-Box). which consists of the values state needs to be substituted with.
                }

    }
    int main(void){
        char message[] = "This is the message I want to encrypt!"
for every 16 bytes {    
sub(message);
}
    }

1 Ответ

0 голосов
/ 17 сентября 2018

Примером будет

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

void sub(char *array, size_t size, char target_char)
{
    size_t num_segments = size / 16;
    for(size_t i=0; i<num_segments; ++i)
    {
        array[15 + i * 16] = target_char;
    }
}

int main(int argc, char** argv)
{
    if (argc != 3)
    {
        printf("need 3 args\n");
        exit(1);
    }

    size_t size;
    char *array = argv[1];
    printf("original char array: %s\n", array);
    sscanf(argv[2], "%zu", &size);

    sub(argv[1], size, 'x');

    printf("new char array: %s\n", array);
    return 0;
}
...