我在这里有点困惑,对此不太确定。我要做的是通过terminal
/ cmd
传递一个文件的名称,该名称将被打开并从中读取。
myfunction(char* fileName, FILE* readFile)
{
if((readFile = fopen(fileName,"r")) == NULL)
{
return FILE_ERROR;
}
return FILE_NO_ERROR;
}
int main(int argc, char **argv)
{
FILE* openReadFile;
if(myfunction(argv[1], openReadFile) != FILE_NO_ERROR)
{
printf("\n %s : ERROR opening file. \n", __FUNCTION__);
}
}
我的问题是,如果我将指针openReadFile
传递给myfunction()
,将readFile
指向已打开文件的指针保存到openReadFile
指针中,还是需要放*readFile
指针。 1}}开场时。
答案 0 :(得分:3)
FILE *需要是一个指针,因此在主openReadFile中保留为指针。
myfunction需要**,所以我们可以用fopen的结果更新FILE *
*readFile = fopen...
更新指针。
int myfunction(char* fileName, FILE** readFile) /* pointer pointer to allow pointer to be changed */
{
if(( *readFile = fopen(fileName,"r")) == NULL)
{
return FILE_ERROR;
}
return FILE_NO_ERROR;
}
int main(int argc, char **argv)
{
FILE* openReadFile; /* This needs to be a pointer. */
if(myfunction(argv[1], &openReadFile) != FILE_NO_ERROR) /* allow address to be updated */
{
printf("\n %s : ERROR opening file. \n", __FUNCTION__);
}
}