estoy tratando de escribir el matricopy función que debe copiar una matriz pero el compilador se queja:¿Cómo copiar la matriz en C?
/* minmatrix.c - test rows and columns of a matrix
* Copyright abandoned. This file is in the public domain. */
#include <stdio.h>
#define ROWCOUNT (3)
#define COLUMNCOUNT (4)
int imat[ ROWCOUNT ][ COLUMNCOUNT ];
char cmat[ ROWCOUNT ][ COLUMNCOUNT ];
double dmat[ ROWCOUNT ][ COLUMNCOUNT ];
int rmat[ ROWCOUNT ][ COLUMNCOUNT ];
void matriscopy (int * destmat, int * srcmat, int rowcount, int columncount)
{
int i, j;
for (i=0; i<rowcount; i=i+1) /* rad-nr */
for (j=0; j<columncount; j=j+1) /* kolumn-nr */
destmat[i][j] = srcmat[i][j];
}
int main()
{
int i; int j;
int * ip; char * cp; double * dp;
for(i = 0; i < ROWCOUNT; i = i + 1)
for(j = 0; j < COLUMNCOUNT; j = j + 1)
{
imat[ i ][ j ] = 10000 + 100*i + j;
cmat[ i ][ j ] = 10*i + j;
dmat[ i ][ j ] = 1.0 + i/100.0 + j/10000.0;
rmat[ i ][ j ] = 0;
};
printf("\n Examining imat:\n");
for(ip = &imat[ 0 ][ 0 ];
ip <= &imat[ ROWCOUNT - 1 ][ COLUMNCOUNT - 1 ];
ip = ip + 1)
printf("memory at: %lx contains value: %d\n", (unsigned long) ip, *ip);
printf("\n Examining cmat:\n");
for(cp = &cmat[ 0 ][ 0 ];
cp <= &cmat[ ROWCOUNT - 1 ][ COLUMNCOUNT - 1 ];
cp = cp + 1)
printf("memory at: %lx contains value: %d\n", (unsigned long) cp, *cp);
printf("\n Examining dmat:\n");
for(dp = &dmat[ 0 ][ 0 ];
dp <= &dmat[ ROWCOUNT - 1 ][ COLUMNCOUNT - 1 ];
dp = dp + 1)
printf("memory at: %lx contains value: %f\n", (unsigned long) dp, *dp);
/* Add a statement here to call your matriscopy function. */
printf("\n Examining rmat:\n");
for(ip = &rmat[ 0 ][ 0 ];
ip <= &rmat[ ROWCOUNT - 1 ][ COLUMNCOUNT - 1 ];
ip = ip + 1)
printf("memory at: %lx contains value: %d\n", (unsigned long) ip, *ip);
return(0);
}
me sale este error:
$ cc minmatrix.c
minmatrix.c: In function ‘matriscopy’:
minmatrix.c:18:17: error: subscripted value is neither array nor pointer nor vector
minmatrix.c:18:32: error: subscripted value is neither array nor pointer nor vector
¿Puede ayudarme a entender?
Puede copiar la matriz con memcpy, puede ser un poco más barato que esos bucles. – Benj
http://stackoverflow.com/questions/16004668/c-allocating-a-matrix-in-a-function/27366086#27366086 Por encima de usted encontrará un programa que he hecho con funciones de asignación y manipulación de matrices en cualquier forma posible para C (gcc C11/C99). Tal vez sea útil 4u ... – 42n4