【问题标题】:My code don't print the array I send to the fuction我的代码不打印我发送给函数的数组
【发布时间】: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,&amp;sum) 电话中获得类似expected ‘char *’ but argument is of type ‘char (*)[32]’ 的信息。
  • 我试过改了也没解决,还有什么问题,非常感谢帮助。
  • 我尝试发送不带 & 的数组。并尝试将校验和更改为 *ch3,两者都不起作用。发送没有 & 的数组不显示错误,但不打印我想要的内容,*ch3 显示几乎相同的错误
  • "%s" 格式说明符需要一个以 NUL 结尾的字符串,我看不到终止它的尝试。此外,通过所有的异或运算,您是否期望所有生成的字符都是可打印的?它们不一定是,最好将每个字符打印为十六进制字节而不是可打印的 C 字符串。
  • sum 未初始化,如果您要做的只是在函数中写入它,那很好,但您不这样做,您将其用于计算。您希望sum 在函数调用之后包含什么内容,为什么?

标签: c checksum


【解决方案1】:

%s 用于字符串文字。要打印整数array 的数据,我们使用for 循环。

//printf("%s", sum);  // Not this
for(int i=0; i<32; i++) printf("%d ", sum[i]);

Here 是您的代码的固定版本。

【讨论】:

  • 但是是char数组,我试了%c为什么不行?
  • 你试过full code吗?它确实对我有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多