Ind*_*igo 7 c pointers casting
我几天前刚刚开始学习C,而且我在使用指针时遇到了一些困难.我正在尝试将字符串转换为整数数组.下面的小snipet似乎正在工作,但我收到一个警告:
在函数'charToInt32'警告:赋值从整数生成指针而没有强制转换[默认启用] | || ===构建完成:0个错误,1个警告(0分钟,0秒)=== |
警告来自线路
int32result[pos] = returnedInteger;
Run Code Online (Sandbox Code Playgroud)
所以我试图了解什么是最好的解决方案.我应该使用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;
}
Run Code Online (Sandbox Code Playgroud)
此外,在程序结束时,我有以下行:
printf("%u ", (unsigned int) int32result[i])
Run Code Online (Sandbox Code Playgroud)
将int32result [i]强制转换为unsigned int是否是避免使用%u作为unsigned int*的另一个警告的唯一解决方案?
我确实检查了另一个"赋值使得指针没有投射的整数"主题/问题,但我无法从他们那里得到最终答案.
谢谢您的帮助.
unsigned int * int32result[1024]
Run Code Online (Sandbox Code Playgroud)
声明一个1024个unsigned int 指针的数组.我想你想在这里使用一系列的int
unsigned int int32result[1024]
Run Code Online (Sandbox Code Playgroud)
您charToInt32在unsigned int * int32result[]参数指定数组数组的位置存在类似问题unsigned int.你有一个数组,所以可以通过unsigned int * int32result(即删除[]).
您的其余代码应该正常工作.电话就像
charToInt32(clearText, int32result);
Run Code Online (Sandbox Code Playgroud)
相当于
charToInt32(clearText, &int32result[0]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94875 次 |
| 最近记录: |