我使用的是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");
...
Run Code Online (Sandbox Code Playgroud)
调用函数代码是:
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 );
Run Code Online (Sandbox Code Playgroud)
在我为文件名添加的手表中显示正确的文本,因此数据传入.
如果你正在使用fopen()那么你用C编码,而不是C++编码.此外,这不是您将数组传递给函数的方式.参数列表的语法是
void f(char arr[], unsigned int arr_size);
Run Code Online (Sandbox Code Playgroud)
对于多维数组,您必须明确指定最右侧维的大小:
void f(char arr[][20], unsigned int arr_size);
Run Code Online (Sandbox Code Playgroud)
也就是说,尝试将参数更改char fileName[50]为char* fileName.
| 归档时间: |
|
| 查看次数: |
7142 次 |
| 最近记录: |