【问题标题】:How to store formatted data to array in C?如何将格式化数据存储到C中的数组?
【发布时间】:2015-03-20 17:16:29
【问题描述】:

我有这段代码将数组src 子串成4 个字符,并将每个子串保存到char dest[5]; 数组中。它工作正常。现在,我想将每 4 个字符存储为另一种格式 - unsigned int- %u 在另一个数组 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;

无论如何,谢谢你们!!

【问题讨论】:

  • 我认为嵌套循环可以帮助 (i=0;i

标签: c arrays printf


【解决方案1】:

sprintf() 和 puts() 期望指向字符的指针,k 是指向无符号整数数组的指针。正确的演员应该可以解决您的问题

【讨论】:

    【解决方案2】:

    您有一些错误。以下是我的修复建议。

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

    【讨论】:

    • 它在每 k 个元素中返回 0 个值。
    • 我可以看到你将如何在k[3] 中获得0 - 无法将"defg" 转换为数字,但k 的其他元素不应该是这种情况.请参阅ideone.com/AnZofC 的工作代码。
    猜你喜欢
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2013-04-05
    • 2014-02-15
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    相关资源
    最近更新 更多