'A function that prints a matrix row
I'm trying to write a function that prints a matrix row chosen by user. It works for the first row of the matrix but it doesn't work for other rows. Here's my code.
row: the row we want to print n: number of the rows/columns in matrix
Matrix (nxn)
Code:
#include <stdio.h>
#define SIZE 50
void prow(float *arr, int row, int n){
int i;
for(i = row * n; i < (row * n) + n; i++){
printf("%f ", *(arr+i));
}
}
int main(){
int n, i, j;
float matrix[SIZE][SIZE];
printf("Row / column number: ");
scanf("%d", &n);
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
printf("[%d][%d] element: ", i, j);
scanf("%f", &matrix[i][j]);
}
}
prow(&matrix[0][0], 2, n);
return 0;
}
Solution 1:[1]
The compiler already knows your array is 50 x 50 and nothing else
#define SIZE 50
float matrix[SIZE][SIZE];
but you are (probably?) using the array as if it had a different size, because you input n as size. So when you assign the entries,
scanf("%f", &matrix[i][j]);
they aren't being put in the right places (each row is still 50 entries according to the compiler, despite n being something else).
Make sure n and SIZE match.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | mmixLinus |
