2013-04-06 56 views
0

我对C编程颇为陌生,我必须制作一个程序,要求用户输入文件名来打开,然后打开该文件并打印排序后的值。是否有必要将文件指针传递给main?

我需要将文件指针传递给main,还是我可以在一个函数中打开该文件,并且我可以在整个其他函数中使用该文件?

int getFile() 
{ 
    char file_name[100]; 
    FILE* fp;   
    int rc;    
    printf("Enter the file name: "); 
    rc = scanf("%s", file_name); 
    if (rc != 1) 
     printf ("error"); 

    fp = fopen(file_name, "r"); 

    return 0; 

}  

我必须将文件指针从这里传递给main吗?

+0

您是否尝试过?如果您尝试一种方法并找到问题,那么专门帮助会更容易。 – chris 2013-04-06 02:41:16

+0

您是否必须将文件指针传递给您调用的库方法?如果是这样,那么文件指针需要在你调用这些方法的地方可用。 – 2013-04-06 02:42:37

+0

如果我输入超过99个字符的文件名,程序开始失败。记住这一点。看起来你需要做的就是返回文件指针。 – chris 2013-04-06 02:49:01

回答

1

只是通过文件名作为参数传递给main功能,也许你想要什么。 您可以使用int main(int argc, char* argv[]),例如:

int main(int argc, char* argv[]) 
{ 
    FILE* fp; 
    if (argc == 1) 
     printf("usage : a.out filename\n"); 
    else 
    { 
     if (fp = fopen(*++argv, "r") != NULL) 
     { 
      /*your code here*/ 
     } 
    } 
    return 0; 
} 
+0

如果他不熟悉C编程(因为他没有指定平台或编译环境),您可能会解释为什么您在printf使用行中使用了“a.out”。 – 2013-04-06 05:14:13

+0

@RandyHoward是的,你也可以帮助我改进我的答案,或只是编辑它。 – prehistoricpenguin 2013-04-06 05:41:48

0

您可以在一个函数中打开该文件,并将其作为参数传递给其他函数。例如,对于预打开的文件句柄标准输入,你可以使用它作为:

char mystring [100]; 
fgets (mystring , 100 , pFile)