I was wondering if you could help me overcome a hurdle I've run into with my C syntax. I have written the function:
binary_and_trim(char *password, unsigned *key1, unsigned *key2)
that has achieved the goal of converting a provided string into binary and trimmed off the leading zero. I have assigned my key1 and key2 pointers to the correct indexes. But then, when I return to the main function the values are all lost.
I believe that the problem is that when I pass the *key1/*key2 pointers to the function it only receives a copy of them. But, as I am new to C, I don't know how to fix it?
I created a for loop to help me test/debug.
#include <stdio.h>
#include <string.h>
void binary_and_trim(char *password, unsigned *key1, unsigned *key2);
unsigned int get_n_bits(unsigned *bits, int width, int index);
int main(int argc, const char * argv[]) {
    unsigned *key1 = NULL;
    unsigned *key2 = NULL;
    binary_and_trim("password", key1, key2);
    //This test fails with a EXC_BAD_ACCESS error
    for(int i = 0 ; i < 28; i++){
        printf("key1[%d] %u    key2[%d] %d\n", i, key1[i], i, (key2 + i));
    }
}
void binary_and_trim(char *password, unsigned *key1, unsigned *key2){
    char c;
    int count = 0;
    unsigned tmp;
    unsigned long len = strlen(password);
    unsigned trimmedbinary[len * 7];
    
    for(int i = 0; i < len; i++){
        c = *(password + i);
    for( int j = 6; j >= 0; j--) {
        tmp = 0;
        if(c >> j & 1){
            tmp = 1;
            }
        *(trimmedbinary + count) = tmp;
        count++;
    }
    }
    key1 = trimmedbinary;
    key2 = &trimmedbinary[28];
    
    //This test works correctly!!!
    for(int i = 0 ; i < 28; i++){
        printf("key1[%d] %d    key2[%d] %d\n", i, *(key1 + i), i, *(key2 + i));
    }
}
 
     
     
    