几天前我刚开始学习 C,但我在使用指针时遇到了一些困难。我正在尝试将字符串转换为整数数组。下面的小片段似乎正在工作,但我收到警告:
在函数 'charToInt32' 警告中:赋值使指针从没有强制转换的整数 [默认启用]| ||=== 构建完成:0 个错误,1 个警告(0 分钟,0 秒)===|
警告来自行
int32result[pos] = returnedInteger;
所以我试图了解什么是最好的解决方案。我应该使用 strncpy (但我可以将 strncpy 用于整数吗?)还是其他什么,或者我只是完全误解了指针?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int charToInt32(char * clearText, unsigned int * int32result[])
{
int i = 0, j = 0, pos = 0; /* Counters */
int dec[4] = {24, 16, 8, 0}; /* Byte positions in an array*/
unsigned int returnedInteger = 0; /* so we can change the order*/
for (i=0; clearText[i]; i+=4) {
returnedInteger = 0;
for (j=0; j <= 3 ; j++) {
returnedInteger |= (unsigned int) (clearText[i+j] << dec[j]) ;
}
int32result[pos] = returnedInteger;
pos++;
}
return pos;
}
int main()
{
int i = 0;
unsigned int * int32result[1024] = {0};
char * clearText = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf(">>Clear: %s\n", clearText);
charToInt32(clearText, int32result); // Do the conversion to int32.
printf(">>Int32 converted: ");
for (i=0; int32result[i]; i++)
printf("%u ", (unsigned int) int32result[i]);
printf("\n");
return 0;
}
此外,在程序结束时,我有以下行:
printf("%u ", (unsigned int) int32result[i])
将 int32result[i] 转换为 unsigned int 是避免另一个使用 %u 作为 unsigned int * 警告的唯一解决方案吗?
我确实检查了另一个“赋值从没有强制转换的指针中生成整数”主题/问题,但我无法从他们那里得到最终答案。
感谢您的帮助。