C Предупреждение: функция возвращает адрес локальной переменной

Функция ниже принимает аргумент 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;
}
5
задан I159 2 April 2014 в 06:14
поделиться