C - Открытие файла внутри функции с помощью fopen - PullRequest
5 голосов
/ 03 мая 2010

Я использую Visual Studio 2005 (C \ C ++).

Я передаю строку в функцию как массив символов. Я хочу открыть файл, переданный в качестве параметра и использовать его. Я знаю, что мой код работает до некоторой степени, потому что если я жестко закодирую имя файла в качестве первого параметра, он отлично работает.

Я замечаю, что если я смотрю на значение как на часы, оно включает в себя адрес, кроме строкового литерала. Я попытался передать имя файла в качестве указателя, но затем он жалуется на преобразование типа с __w64. Как я уже говорил, он отлично работает с «filename.txt» вместо fileName. Я в тупике.

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 );

В часах, которые я добавил для имени файла, появляется правильный текст, поэтому данные передаются.

1 Ответ

5 голосов
/ 03 мая 2010

Если вы используете 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.

...