我正在尝试在程序中的unsigned char数组中的每个第3个字节上执行XOR字节操作 . 我尝试编译程序时发生类型转换错误 .
我的声明
unsigned char *s;
FILE *fp;
char ch;
int count = 0;
unsigned char *load = malloc(sizeof(char));
int i = 0;
s = "s";
这就是错误发生的地方......
for (i = 3; i < count;)
{
temp = (load[i-1] ^ s);
temp2 = (load[i] ^ s);
i = i + 3;
}
一旦我可以让XOR操作工作,我将设置load [i-1] = temp,现在我只是试图让操作编译并希望有效 .
在此先感谢任何帮助/见解 .
编辑*已更新以提供临时数据类型,并显示如何使用unsigned char * load = malloc(sizeof(char))从文件中获取数据 .
char temp, temp2;
while ((ch = fgetc(fp)) != EOF)
{
load[i++] = ch;
}
这是它产生的错误......
main.c:14:4:警告:从'char [2]'赋值给'unsigned char *''指针转换为具有不同符号的整数类型[-Wpointer-sign]
s = "s";
^ ~~~
main.c:86:21:错误:二进制表达式的操作数无效('int'和'unsigned char *')
temp = (load[i-1] ^ s);
~~~~~~~~~ ^ ~
main.c:87:20:错误:二进制表达式的无效操作数('int'和'unsigned char *')
temp2 = (load[i] ^ s);
1 回答
您正在分配内存以仅保留一个
unsigned char
然后,您尝试使用
load[i-1]
访问第三个字符 .Update
编译器错误非常清楚错误的性质
也许你打算用:
关于其他编译器消息,您可以通过在定义时初始化
s
来处理它 .而不是以后分配给它 .