Функция ниже принимает аргумент 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;
}