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

如何将格式化数据存储到C中的数组?,c,arrays,printf,C,Arrays,Printf,我有这段代码将数组src分为4个字符,并将每个子字符串保存到char dest[5]数组。它很好用。现在,我想将每4个字符存储到另一种格式中—无符号int-%u在另一个数组中无符号长k[4] 我一直在尝试使用sprintf()将格式化输入存储在k中,但它没有提供数组dest中每个元素的转换。 所以,我可以有k[0]=dest[0],k[1]=dest[1],等等 unsigned int k [4]; char dest[5] ; // 4 chars + ter

我有这段代码将数组
src
分为4个字符,并将每个子字符串保存到
char dest[5]数组。它很好用。现在,我想将每4个字符存储到另一种格式中—无符号int-
%u
在另一个数组中
无符号长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++;

        }

无论如何,谢谢你们

sprintf()和put()除了指向字符的指针外,k是指向无符号整数数组的指针。正确的类型转换可以解决您的问题

您有一些错误。下面是我的建议来解决这些问题

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++;

}
while(b*4
我认为嵌套循环有助于(I=0;I)在每k个元素中返回0个值。我可以看到如何在
k[3]
中获得
0
——无法将
“defg”
转换为数字,但
k
的其他元素不应如此。请参阅第页的工作代码。
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++;

}