Я пытаюсь определить путь во время компиляции путем пропускания:Ошибка сегментации при использовании strcpy?
-DDCROOTDEF='"/path/to/stuff"'
на линии компиляции. Затем я попытаюсь использовать его в коде:
char * ptr_path;
strcpy(ptr_path, DCROOTDEF);
strcat(ptr_path,"/MainCommons/CommonLib/fonts/Arial.ttf");
char *pftf=ptr_path;
gdImageStringFT(pimg,brect,iclr,pftf,pts,ang,ixp,iyp, (char *)cbuf);
Это дает мне ошибку сегментации. Однако, если я попытаюсь напечатать строку сначала:
char * ptr_path;
strcpy(ptr_path, DCROOTDEF);
strcat(ptr_path,"/MainCommons/CommonLib/fonts/Arial.ttf");
char *pftf=ptr_path;
printf("%s\n",pftf);
gdImageStringFT(pimg,brect,iclr,pftf,pts,ang,ixp,iyp, (char *)cbuf);
Это работает просто отлично. Какую сложность в указателе символов я не вижу здесь?
Благодаря
Как насчет добавления '\ 0' в конце строки? – karlphillip
@karlphillip: '\ 0' автоматически включается в конец строкового литерала. –
+1 Это правда. – karlphillip