下面的函数接受包含应用程序调用路径的argv [0]参数,并替换最后一位直到遇到“ /”,并使用位于同一文件夹中的新应用程序的名称生成。
顺便说一下:我声明了一个全局argv变量,以便函数可以访问它,因为我不想在每个函数调用中传递信息。
当我编译代码时,所有似乎都可以工作,但我会收到上述警告。
我知道我正在声明变量,并且一旦函数返回,它将被销毁。
作为初学者C程序员,我想知道解决此问题的最优雅/最简单的方法是什么?
我应该将指针传递给函数或分配一些内存吗?
char *returnFullPath()
{
char pathToApp[strlen(argv[0])+1];
strcpy(pathToApp, argv[0]);
int path_length = strlen(argv[0]);
while (pathToApp[path_length] != '/')
{
path_length--;
}
if (path_length > 2)
pathToApp[path_length+1] = '\0';
else
pathToApp[0] = '\0';
// length of getcwd + length of pathtoapp + 1 for zero plus 6 for "bidbot"
char bidbotPath[strlen(getcwd(NULL,0)) + strlen(pathToApp) + 1 + 6];
sprintf(bidbotPath, "%s/%sbidbot", getcwd(NULL,0), pathToApp);
return bidbotPath;
}