C – Abrir un archivo dentro de una función usando fopen

Estoy usando Visual Studio 2005 (C \ C ++).

Estoy pasando una cadena en una función como una matriz char. Quiero abrir el archivo pasado como parámetro y usarlo. Sé que mi código funciona en cierta medida, porque si codifico el nombre del archivo como el primer parámetro, funciona perfectamente.

Observo que si veo el valor como un reloj, el valor incluye la dirección a un lado de la cadena literal. He intentado pasar el nombre del archivo como un puntero, pero luego se queja sobre la conversión de tipos con __w64. Como dije antes, funciona bien con “filename.txt” en lugar de fileName. Estoy perplejo.

void read(char fileName[50],int destArray[MAX_R][MAX_C],int demSize[2]) { int rows=0; int cols=0; int row=0; int col=0; FILE * f = fopen(fileName,"r"); ... 

El código de la función de llamada es:

 char in_filename[50]; int dem[MAX_R][MAX_C]; int dem_size[2]; get_user_input( in_filename); read(in_filename, dem, dem_size ); 

En el reloj que agregué para nombre de archivo, aparece el texto correcto, por lo que los datos se pasan.

Si está utilizando fopen() entonces está codificando en C, no en C ++. Además, esta no es la forma en que pasas los arreglos a las funciones. La syntax para la lista de parámetros es

 void f(char arr[], unsigned int arr_size); 

En el caso de matrices multidimensionales, debe especificar explícitamente el tamaño de la dimensión más a la derecha:

 void f(char arr[][20], unsigned int arr_size); 

Dicho esto, intente cambiar el parámetro de char fileName[50] a char* fileName .