gpt4 book ai didi

c - 是否有正确的方法将基本路径名与新路径名连接起来?

转载 作者:行者123 更新时间:2023-11-30 19:06:45 25 4
gpt4 key购买 nike

有没有一种方法可以使用更新的路径来更新基本路径的字符数组?

struct dirent *dp;
DIR *dir;
struct stat buf;
dir = opendir("./statdir/");
int x;
char base_path[11] = "./statdir/";
char* full_path;

int main(int argc, char* argv[]){
while((dp = readdir(dir)) != NULL) {
full_path = strcat(base_path, dp->d_name);

if((x = lstat(full_path, &buf)) == -1) {
perror("stat failed");
exit(1);
}
printf("Debug: %s\n", full_path);

}
closedir(dir);
return(0);
}
}

我的目标是在每次循环后更新 full_path 到 base_path + 无论参数传递给 argv[] ,在我的目录中我有两个文件名称 file1 和 file2....

即,如果我运行代码并编写 ./Stat,我预计 full_path 为“./statdir/file1”,然后为“./statdir/file2”

然而我得到的结果是:

调试:./statdir/。

调试:./statdir/...

统计失败:没有这样的文件或目录

最佳答案

您可以使用 snprintf 构建完整的文件名,如下所示...

snprintf(full_path, PATH_MAX, "%s/%s",base_path, dp->d_name);

...但您首先需要确保 full_path 有空间包含文件名,因此请替换

char *full_path;

char full_path[PATH_MAX];

关于c - 是否有正确的方法将基本路径名与新路径名连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717724/

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