Написание шестнадцатеричного шаблона через sscan f - PullRequest
0 голосов
/ 26 марта 2012

Мои две переменные являются 32-разрядными целыми числами без знака. Не уверен, почему это не работает:

// Arguments: output_file how_many_mb 

int main(int argc, char * argv[])
{
    uint32_t pattern, counter;
    int i, count;
    counter = 1;
    sscanf(&counter, "%x", &pattern); 
    FILE * outFile = fopen(argv[1],"wb");
    int times = atoi(argv[2]);
    count = 0;

    times = times*1048576; // Write out 4bytes at a time

    for (i = 0; i < times; i++) {
        fwrite(&pattern, 1, 1, outFile);
        counter<<=1;
        sscanf(&counter, "%x", &pattern);  
        count++;

        if (counter == 0) { 
            sscanf("00000000", "%x", &pattern);  
                if (count < 100)
                printf ("Reached the condition %0x \n", pattern);   
            counter = 1;    
        }
        if (count < 100)
            printf ("%x\n", pattern);
        }
        fclose (outFile);
    }

Я пытаюсь "записать" шестнадцатеричный шаблон в файл. Я бита счетчика сдвига, а затем записать его в шаблон как шестнадцатеричный. Это утверждение вызывает у меня проблемы. Созданный файл содержит мусор.

Спасибо.

1 Ответ

4 голосов
/ 26 марта 2012

Вы используете sscanf неправильно (см. http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/)

int32_t counter;
const char * pattern = "badf00d";
sscanf(pattern, "%x", &counter);
...