Программа имеет неопределенное поведение, потому что в этой функции
const char* takeInput() {
char string2[10];
/* some code */
char *string0 = malloc(sizeof(string2));
string0 = string2;
return string0;
}
возвращается указатель на локальный массив
string0 = string2;
return string0;
. Кроме того, функция имеет утечку памяти, потому что выделена память и ее адрес назначен указателю string0, а затем указатель переназначен.
Если массив string2 содержит строку, то вы можете использовать стандарт C функция strcpy
как
strcpy( string0, string2 );
В противном случае используйте функцию memcpy
.
Обратите внимание, что в этом случае не рекомендуется использовать числа волхвов c, например 95 или 48 фрагмент кода
// converting chars to digits or the '_' char
if (string[traverse] != 95) {
array[i][j] = (string[traverse] - 48);
}
else {
array[i][j] = 48;
}
Кажется, вы имеете в виду следующее
// converting chars to digits or the '_' char
if (string[traverse] != '_' ) {
array[i][j] = (string[traverse] - '0');
}
else {
array[i][j] = '0';
}
, хотя, возможно, в выражении else вы имеете в виду 0 вместо '0'
else {
array[i][j] = 0;
}