Вы пытаетесь добавить символ к строковому литералу (т. Е. "Images/image"
), и это приводит к нарушению доступа, так как он хранится в постоянной памяти.
Вместо этого следует сделать:
char image[100]="Images/image"; // make it large enough to contain all the further modifications you plan to do
strcat(image,"_");
Это будет работать, потому что вы работаете с локальным буфером, который вы можете свободно изменять.
Чтобы избежать других ошибок со строковыми литералами, вы всегда должны использовать const char *
, чтобы указывать на нихкомпилятор не позволит вам даже попытаться изменить их.
Кстати, поскольку вы работаете в C ++, нет причин не использовать строки C ++ вместо char *
& co.