我無法從函數返回字符串。它在主要方法中打印出垃圾值。我在這個論壇上看到了類似的問題,但該頁面上的結果並沒有幫助我。我不想將另一個變量傳遞給函數。我希望能夠按原樣返回字符串值。我怎麼能這樣做呢?C字符串返回函數返回垃圾
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;
}
你的幫助是極大的讚賞!
你沒有使用'strncat'正確。最後一個參數應該是要附加的最大字符數*,而不是該字符串應該包含的最大字符數。考慮使用帶有「%s /%s」格式的'snprintf'等。 – dreamlax
你真的應該學習如何使用'gdb'調試器。 –