C – 使用fopen打开函数内的文件

我正在使用Visual Studio 2005(C \ C ++)。

我将一个字符串作为char数组传递给函数。 我想打开作为参数传入的文件并使用它。 我知道我的代码在某种程度上有效,因为如果我将文件名硬编码为第一个参数,它就可以完美地工作。

我注意到如果我将值看作手表,该值包括字符串文字旁边的地址。 我已经尝试将文件名作为指针传递,但它然后抱怨使用__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 ); 

在我为文件名添加的手表中显示正确的文本,因此数据将被传入。

如果你正在使用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