gpt4 book ai didi

c - 在 int 数组中存储 char 时出错

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:30 24 4
gpt4 key购买 nike

我用 C 编写了 Transposition Cipher 并且对这段代码的输出感到困惑。

#include<stdio.h>
#include<string.h>
#include<math.h>

main()
{
char plain[]="Ibrahimovic called them babies in Champions League";
int row,col,key,i=0;

printf("key length: ");
scanf("%d%*c",&key);

int enc[(int) (ceil(strlen(plain)/key))][key];

for(row=0; row<(int) (ceil( (double) strlen(plain)/key)); ++row)
{
for(col=0; col<key; ++col)
{
if(i==strlen(plain))
enc[row][col]='^';
else if(i>strlen(plain))
enc[row][col]='%';
else
enc[row][col]=plain[i];
printf(" %c |",enc[row][col]);
++i;
}
putchar('\n');
}

putchar('"');
for(col=0; col<key ; ++col)
for(row=0; row<(int) (ceil((double) strlen(plain)/key)) ; ++row)
printf("%c",enc[row][col]);
puts("\"\n");
}

这是当key=8时的输出。

 I | b | r | a | h | i | m | o |
v | i | c | | c | a | l | l |
e | d | | t | h | e | m | |
b | a | b | i | e | s | | i |
n | | C | h | a | m | p | i |
o | n | s | | L | e | a | g |
u | e | ^ | % | % | % | % | % |

"Ivebnoubida nerc bCs^a tih %hcheaL%iaesme%mlm pa�ol iig%"

所以循环中printf函数的输出表明enc数组中的所有元素都是正确的。但是当我在循环外打印它时,其中一个元素是错误的。

如果我在循环外更改 printf 函数的格式以打印整数值,则表示错误的元素值为 -1。

"73 118 101 98 110 111 117 98 105 100 97 32 110 101 114 99 32 98 67 115 94 97 32 116 105 104 32 37 104 99 104 101 97 76 37 105 97 101 115 109 101 37 109 108 109 32 112 97 **-1** 111 108 32 105 105 103 37 "

那么我的代码有什么问题呢?谢谢

最佳答案

int enc[(int) (ceil(strlen(plain)/key))][key];

这一行有一个整数除法,我假设你想要一个 float 但错过了转换。

关于c - 在 int 数组中存储 char 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29061964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com