2013-07-09 2 views
0

Я пытаюсь concatenate строк и 2/3 строки являются пути и defined в #defineконкатенации с помощью #define в C

Например:

#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 256 с sizeof(path_of_executable)

1

В строке

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

заменить sizeof 256 с SizeOf (path_of_executable)

Смежные вопросы