strcat(str,(const char *)"\'");
strcat(str,key);
strcat(str,(const char *)"\'");
str
должен быть достаточно большим, чтобы вместить всю объединенную строку результата, плюс \0
для завершения строки. Это не так в вашем примере с объявлением str
как:
static const char str[] = "select * from name";
с str
для хранения только размера старой строки плюс \0
. Таким образом, попытка добавить больше символов вызывает ошибку сегментации.
Попробуйте объявить str
с фиксированным размером, достаточным для хранения строки результата (старая строка select * from name
+ \'
+ 1234
+ \'
+ завершающий \0
, который должен составлять всего 25 символов, если я считаю правильно).
str
должен быть непостоянным, чтобы изменить значение str
кстати, поэтому опустите static const
.
Также опустите приведение (const char *)
; и замените "\'"
на "'"
.
Результат будет следующим:
char str[25];
strcpy(str,"select * from name");
STATICF boolean test(){
char key[] = "1234";
strcat(str,"'");
strcat(str,key);
strcat(str,"'");
}