gpt4 book ai didi

c - 使用绝对路径打开文件

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

我正在尝试使用绝对路径打开文件。我目前正在 Windows 中执行此操作,但也需要它才能在 Unix 环境中工作。

路径是使用环境变量组成的,如下所示。

char *dataPath = getenv ("DATA");
strcat(dataPath, "/index");
char indexPath[255] = {0};
strcat(indexPath, dataPath);
strcat(indexPath, "/index.tbl");
printf("Path: %s\n", indexPath);
ip = fopen(indexPath, "r");

此代码打印出 C:\Data/index/index.tbl 但应用程序无法打开该文件。

我做错了什么?

最佳答案

这是不正确的:

char *dataPath = getenv ("DATA");
strcat(dataPath, "/index");

并且可能会覆盖进程环境 block 的一部分。来自 man getenv :

As typically implemented, getenv() returns a pointer to a string within the environment list. The caller must take care not to modify this string, since that would change the environment of the process.

您需要分配一个足够大的缓冲区以包含完整路径并复制到 getenv("DATA") 中,然后复制到 strcat()sprintf( ):

const char* dataPath = getenv("DATA");
char* fullPath = 0;
if (dataPath)
{
/* 6 for "/index" and 1 for terminating null character. */
fullPath = malloc(strlen(dataPath) + 6 + 1);
if (fullPath)
{
sprintf(fullPath, "%s/index", dataPath);

free(fullPath);
}
}

关于c - 使用绝对路径打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9722070/

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