Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 是否需要将文件指针传递到main?_C - Fatal编程技术网

C 是否需要将文件指针传递到main?

C 是否需要将文件指针传递到main?,c,C,我对C编程非常陌生,我必须制作一个程序,要求用户输入要打开的文件名,然后打开该文件并打印排序后的值 我是否需要将文件指针传递到main,或者我可以在一个函数中打开文件,然后在其他函数中使用该文件 int getFile () { char file_name[100]; FILE* fp; int rc; printf("Enter the file name: "); rc = scanf("%s",

我对C编程非常陌生,我必须制作一个程序,要求用户输入要打开的文件名,然后打开该文件并打印排序后的值

我是否需要将文件指针传递到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?

您可以在一个函数中打开文件,并将其作为参数传递给其他函数。例如,对于预打开的文件句柄stdin,可以将其用作:

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

只需将文件名作为参数传递给
main
函数,它可能就是您想要的。 您可以使用
intmain(intargc,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;
}

你也试过了吗?如果您尝试一种方法并发现问题,则更容易提供具体帮助。是否必须传递指向您调用的库方法的文件指针?如果是这样,那么文件指针需要在调用这些方法的地方可用。如果我输入的文件名超过99个字符,则程序开始失败。记住这一点。看起来您需要做的就是返回文件指针。如果他是C编程新手(而且因为他没有指定平台或构建环境),您可以解释为什么在printf使用行中使用“a.out”。@RandyHoward是的,您也可以帮助我改进答案,或者编辑它。