如何将格式化数据存储到C中的数组?

时间:2015-03-20 17:16:29

标签: c arrays printf

我有这个代码将数组src子串到4个字符,并将每个子字符串保存到char dest[5];数组中。它工作正常。现在,我想将每4个字符存储为另一种格式 - 另一个数组%u中的unsigned int- unsigned long k[4] ; 我一直在尝试使用sprintf()将格式化的输入存储在k中,但它没有给我转换数组dest中的每个元素。 所以,我可以有k [0] = dest [0],k [1] = dest [1],依此类推!

        unsigned int k [4];
        char dest[5] ; // 4 chars + terminator */
        char src [] = "123456789abcdefg"
        int len = strlen(src);
        int b = 0;
        int bb=1;
        while (b*4 < len) {
            strncpy(dest, src+(b*4), 4);

            printf("loop %s\n",dest);

           sprintf(&k, "%u",dest);
            puts(k);                
            b++;

        }

我刚刚得到了解决方案,

unsigned long *k = (unsigned long *) dest;

无论如何,谢谢你们!!

2 个答案:

答案 0 :(得分:1)

sprintf()和puts()期望指向chars的指针,k是指向unsigned int数组的指针。适当的演员表可以解决你的问题

答案 1 :(得分:1)

你有一些错误。以下是我修复它们的建议。

while (b*4 < len) {
    strncpy(dest, src+(b*4), 4);
    dest[4] = '\0';    // Make sure to null terminate dest

    printf("loop %s\n",dest);

    // Need sscanf, not sprintf
    // sprintf(&k, "%u",dest); 
    sscanf(dest, "%u", &k[b] );

    // Need printf, not puts, 
    // puts(k);
    printf("%u", k[b]);

    b++;

}