gpt4 book ai didi

c - 如何将 * char 复制到静态字符串数组,printf 产生奇怪的输出,

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:33 26 4
gpt4 key购买 nike

我尝试了这种循环的各种排列。

char hrstdesc[50][50];
char hrstread[50][50];
int i = 0;

for (hfree = hentry; hfree; hfree = hfree->prev) {
if (filterentry(hfree)) {
continue;
}

strcpy(&hrstdesc[i][0], hfree->hrstdesc);
printf("%s \n", hrstdesc[i]);
i++;
}
printf("%s \n", hrstdesc[1]);

输出是,

/run/media/username/archive
/home
/var
/
/ho/va/

前 4 行来自 printf("%s\n", srtdesc);,这是我所期望的。

最后一行,我希望看到 /home,但我得到的是 /ho/va/

https://github.com/techzilla/check_snmp_extras/blob/master/src/check_snmp_disks.c

最佳答案

在您链接的文件中,您将 hrstdesc[][] 定义为 hrstdesc[MAX_ENTRIES][MAX_ENTRIES](而不是 [50][50])。 MAX_ENTRIES 在同一存储库中可用的 check_snmp_extras.h header 中被#defined 为 3。

奇怪的行为是由于每次循环迭代时 hrstdesc[][] 的溢出。

您的最终 hrstdesc[1] 是循环迭代 1 (/home) 的前 3 个字符,然后是循环迭代 2 (/var) 的前 3 个字符,然后是循环迭代 3 (/) 的一个字符.

关于c - 如何将 * char 复制到静态字符串数组,printf 产生奇怪的输出,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45442042/

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