Я использую Visual Studio 2005 (C\C ++).
Я передаю строку в функцию как массив символов. Я хочу открыться, файл передал в в качестве параметра, и используйте его. Я знаю свои работы кода до степени, потому что, если я hardcode имя файла как первый параметр она работает отлично.
Я действительно замечаю, смотрю ли я на значение как на часы, значение включает адрес в стороне строковый литерал. Я попытался передать в имени файла как указатель, но оно затем жалуется на преобразование типов с __ w64. Как я сказал, прежде чем это будет хорошо работать с "filename.txt" вместо имени файла. Я озадачен.
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");
...
Код функции вызова:
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 );
В часах я добавил для имени файла, правильный текст появляется, таким образом, данные становятся переданными в.
Если вы используете fopen ()
, то вы кодируете на C, а не на C ++. Кроме того, это не то, как вы передаете массивы функциям. Синтаксис для списка параметров:
void f(char arr[], unsigned int arr_size);
В случае многомерных массивов вы должны явно указать размер самого правого измерения:
void f(char arr[][20], unsigned int arr_size);
Тем не менее, попробуйте изменить параметр с char fileName [50]
в char * fileName
.