Función de retorno de cadena C devuelve basura

Tengo problemas para devolver una cadena desde una función. Imprime un valor de basura en el método principal. Vi una pregunta similar en este foro, pero los resultados en esa página no me ayudaron. NO quiero pasar otra variable a la función. Quiero poder devolver el valor de cadena tal como está. ¿Cómo puedo hacer eso?

<pre><code>char *LookupPath(char **argv, char **dir) { /* String Name To Be Returned */ char path_name[MAX_PATH_LEN] = {0}; char *result = malloc(sizeof(path_name)); int i; /* Check To See If File Name Is Already An Absolute Path Name */ if(*argv[0] == '/') { } /* Look In Path Directories */ for(i = 0; dir[i] != NULL; i++) { strncat(path_name, dir[i], sizeof(path_name)); strncat(path_name, "/", sizeof(path_name)); strncat(path_name, argv[0], sizeof(path_name)); result = path_name; if(access(result, F_OK) == 0) { printf("result: %s\n", result); return result; } path_name[0] = '\0'; } /* File Name Not Found In Any Path Variable */ return NULL; } </code></pre>

¡Tu ayuda es muy apreciada!

Respuestas a la pregunta(4)

Su respuesta a la pregunta