gpt4 book ai didi

C: 打印 char * 数组的问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:51 25 4
gpt4 key购买 nike

我有一个像这样初始化的 char * 数组:

char *keys[16]; //16 elements, each of which is a char *

然后我像这样分配给这个数组:

  for(i = 0; i < NUM_ROUNDS; i++)
{
//do some operations that generate a char* holding 48 characters named keyi
keys[i] = keyi;
}

但是当我打印出 char * 数组的所有元素时,我在打印语句的末尾得到了垃圾:

  int k;
for(k = 0; k < 16; k++)
{
printf("keys[%d] = %s\n", k,keys[k]);
}

输出看起来像这样:

keys[0] = 000110110000001011101111111111000111000001110010çVTz¸ä
keys[1] = 011110011010111011011001110110111100100111100101çVTz¸ä
keys[2] = 010101011111110010001010010000101100111110011001çVTz¸ä
keys[3] = 011100101010110111010110110110110011010100011101çVTz¸ä
keys[4] = 011111001110110000000111111010110101001110101000çVTz¸ä
keys[5] = 011000111010010100111110010100000111101100101111çVTz¸ä

知道我在这里做错了什么吗?我应该在分配给数组之前分配内存吗?

最佳答案

keyi 很可能不是以 NUL 结尾的。

也许你想要这个?

keyi[48] = 0;   /* Caveat, keyi must be at least 49 chars wide. */
keys[i] = keyi;

或者也许:

printf("keys[%d] = %.48s\n", k,keys[k]);

关于C: 打印 char * 数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343205/

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