gpt4 book ai didi

c - C中的数组问题

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

我很困惑。在 while 循环中,我将每个文件名添加到一个数组中,然后打印出来。

然而在 for 循环中它打印了一些奇怪的东西并在中间停止执行。

请帮我修复它。

char *commands[1000];

char *str;
DIR * dir;

struct dirent * entry;

char *env = getenv("PATH");

do {
str = strsep(&env, ":");

if(str != NULL)
if(strlen(newEnv) > 0) {

dir = opendir(str);
if( dir == NULL ) break;

flag = 0;
while((entry = readdir(dir)) != NULL) {
commands[++count] = entry->d_name;
printf("---%i %s\n", count ,commands[count]); // prints fine
}
closedir(dir); // close directory

}

} while(newEnv);

commands[++count] = '\0';
printf("count = : %i\n", count);

for(int i = 0; i < count; i ++)
{
if(commands[i] == NULL)
break;
printf("aaa%i %s\n\n", i, commands[i]); //problem loop
}

最佳答案

您正在将指针设置为指向 readdir 接收的 dir 结构。但是,该结构是 deallocated by closedir .

您需要复制字符串(strdup 和 friend )。

关于c - C中的数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242179/

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