Аргумент имеет тип int (*)[5]
, а параметр имеет тип int**
, они несовместимы, используйте:
void concatMatrix(int matrix[][5], char *output);
Кроме того, второй параметр strcat
ожидает символ массив, и вы передаете ему один аргумент char, за исключением того факта, что str
указывает на строковый литерал, который является константой и не может быть изменен.
Вам не нужно будет использовать strcat
, чтобы сделать это, вы можете назначить их непосредственно на output
с правильным преобразованием:
Запуск образца
#include <stdio.h>
void concatMatrix(int matrix[][5], char *output)
{
int index = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++, index++)
{
output[index] = matrix[i][j] + '0'; //convert from int to char and assign to output
}
}
output[index] = '\0'; //null terminate the string
}
int main()
{
int matrix[5][5] = {{1, 4, 3, 5, 2},
{7, 9, 5, 9, 0},
{1, 4, 3, 5, 2},
{1, 4, 3, 5, 2},
{7, 9, 5, 9, 0}};
char output[26]; //must have space for null terminator
concatMatrix(matrix, output);
printf("%s", output);
}
Это будет работать только для однозначных чисел, которые я сбор - это целевое назначение, учитывая размер строки output
и остальной код.