2013-07-09 315 views
0

我想concatenate字符串和2/3字符串路徑,並在#define字符串連接

例如是defined

#define BASE_PATH "foo/bar" 
#define BIN_PATH "baz/bin" 

我希望能夠直接預定義路徑。示例用例是查看該文件夾的內容。

char path_of_executable[256]; 
printf ("%s \n",executable); 
snprintf(path_of_executable, sizeof 256, "%s,%s,%s",BASE_PATH,executable,BIN_PATH); 
printf("%s \n",path_of_executable); 
chdir(path_of_executable); 
execlp("ls","ls","-l",NULL); 

的path_of_executable被打印出來/fo

我不能直接給這條道路,而是在當前文件夾中的文件被打印出來。任何想法可能是什麼問題?

回答

2

您使用的是sizeof 256,其轉換爲sizeof int,在您的平臺上顯然爲4。這就是爲什麼結果字符串不超過4個字符(包括空終止符)。改爲使用sizeof path_of_executable

+0

WOHA!但爲什麼我不能更改到該目錄? 。我收回我的問題 – pistal

+0

'%s'之間的附加','產生了問題。 – pistal

2

sizeof(path_of_executable)

1

更換sizeof 256在線路

snprintf(path_of_executable, sizeof 256, "%s,%s,%s",BASE_PATH,executable,BIN_PATH); 

替換sizeof 256用的sizeof(path_of_executable)