我有这个代码将数组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;
无论如何,谢谢你们!!
答案 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++;
}