【发布时间】:2021-07-24 02:14:50
【问题描述】:
所以我正在尝试进行校验和,并在我的代码中发送一个数组以获取函数的结果,但我的 printf 中没有结果显示任何人都可以帮助我解决这个问题,代码是这样的。(Ps. : main 只是一个例子。)
#include<stdio.h>
#include<string.h>
void getchecksum(char buffer[32][32], char ch3[32]){
char ch1[32],ch2[32];
for(int i=0;i<32;i++){
for(int j=0;j<32;j++){
ch1[j]=buffer[j][i];
}
i++;
for(int j=0;j<32;j++){
ch2[j]=buffer[j][i];
ch2[j]=ch1[j]^ch2[j];
if(i<2) ch3[j]=ch2[j];
else ch3[j]=ch3[j]^ch2[j];
}
}
}
int main (){
char temp[32][32],sum[32];
for(int i=0;i<32;i++){
for(int j=0;j<32;j++){
temp[j][i]='a';
}
}
getchecksum(temp,&sum);
printf("%s", sum);
return 0;
}
也试过了:
getchecksum(temp,sum);
for(int j=0;j<32;j++){
printf("%c", sum[j]);
}
【问题讨论】:
-
注意编译器的警告。您应该从
getchecksum(temp,&sum)电话中获得类似expected ‘char *’ but argument is of type ‘char (*)[32]’的信息。 -
我试过改了也没解决,还有什么问题,非常感谢帮助。
-
我尝试发送不带 & 的数组。并尝试将校验和更改为 *ch3,两者都不起作用。发送没有 & 的数组不显示错误,但不打印我想要的内容,*ch3 显示几乎相同的错误
-
"%s"格式说明符需要一个以 NUL 结尾的字符串,我看不到终止它的尝试。此外,通过所有的异或运算,您是否期望所有生成的字符都是可打印的?它们不一定是,最好将每个字符打印为十六进制字节而不是可打印的 C 字符串。 -
sum未初始化,如果您要做的只是在函数中写入它,那很好,但您不这样做,您将其用于计算。您希望sum在函数调用之后包含什么内容,为什么?