文字列を c の構造体文字列変数にコピーしようとしているプログラムに問題があります。文字列をコピーした後、構造体文字列変数にコピーされた一時文字列変数を解放しようとしています。しかし、文字列を解放しようとすると、プログラムがオンになり、「解放されるポインターが割り当てられていません」と表示されます。何が起こっているのか正確にはわかりません。
char str[]=" "; //temporary string to copy to structs string
str[3]=s; //putting a char s in middle
strcpy(matrix[i-1][j].c, str); //copying the string
free(str); //freeing str that now is useless when copied