Вы объявили p3
как массив указателей вместо массива символов.Затем вы передаете *p3
в strcpy
, который является неинициализированным указателем, который затем пытается разыменовать недопустимый указатель, вызывая неопределенное поведение .
Вы также не указали p3
пробелдля нулевого байта в конце строки c
.
Измените p3
на массив char
и предоставьте ему дополнительный байт пространства:
char p3[strlen(c)+1];
strcpy( p3, c);
И измените printSummary
на соответствие:
void printSummary(int *a, float *b, char c[]) {
printf("Summary: \n A: %d\n B: %.1f\n C: %s\n", *a, *b, c);
}