C 向函数发送文件指针以进行读取

C 向函数发送文件指针以进行读取,c,C,我已经连续几个小时在做这件事了,我搜索了又搜索,我的代码仍然不能正常工作 如何使用argv[]作为要读取的文件从main中的函数读取文件 #include <stdio.h> #include <stdlib.h> #include <errno.h> FILE words(FILE *filesToRead) { const char *Open; Open = (char *)filesToRead; filesToRead

我已经连续几个小时在做这件事了,我搜索了又搜索,我的代码仍然不能正常工作

如何使用
argv[]
作为要读取的文件从main中的函数读取文件

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>


FILE words(FILE *filesToRead)
{
    const char *Open;
    Open = (char *)filesToRead;

    filesToRead = fopen(Open, "rt");
    int line;
    while ((line = fgetc(filesToRead)) != EOF)
    {
        printf("%c", line);
    }

    fclose(filesToRead);

}

int main(int argc, char *argv[])
{
    char *ah = argv[];
    words(ah);
    return 0;
}
#包括
#包括
#包括
文件字(文件*文件存储)
{
常量字符*打开;
Open=(char*)文件存储;
filesToRead=fopen(打开,“rt”);
内线;
而((line=fgetc(filesToRead))!=EOF)
{
printf(“%c”,第行);
}
fclose(文件存储);
}
int main(int argc,char*argv[])
{
char*ah=argv[];
文字(啊);
返回0;
}
试试这个:

void words(char *filename)
{
    FILE *filesToRead = fopen(filename, "rt");
    /* ... */
}

int main(int argc, char *argv[])
{
    if (argc > 1)
        words(argv[1]);

    return 0;
}
老实说(请不要生气),你的代码看起来好像跳过了你正在使用的C语言书中的几章。

试试这个:

void words(char *filename)
{
    FILE *filesToRead = fopen(filename, "rt");
    /* ... */
}

int main(int argc, char *argv[])
{
    if (argc > 1)
        words(argv[1]);

    return 0;
}

老实说(请不要生气),你的代码看起来好像跳过了你正在使用的C语言书中的几章。

argv[]
是一个
char*
数组。例如,如果从命令行调用程序,则如下所示:

my_prog.exe foo bar

然后:

  • argc
    将为3
  • argv[0]
    将指向“my_prog.exe”
  • argv[1]
    将指向“foo”
  • argv[2]
    将指向“bar”

因此,在
main()
函数中,如果需要一个参数,则需要检查
argc
的值是否为2,然后从
argv[1]
中读取参数。例如,如果从命令行调用程序,则如下所示:

my_prog.exe foo bar

然后:

  • argc
    将为3
  • argv[0]
    将指向“my_prog.exe”
  • argv[1]
    将指向“foo”
  • argv[2]
    将指向“bar”

因此,在
main()
函数中,如果需要一个参数,则需要检查
argc
的值是否为2,然后从
argv[1]

hmm中读取参数。。好啊仍然会出现错误,说struct FILE*但参数的类型是char*,您的words()函数也是错误的。您需要@cnicutar的答案,我只是想帮助您了解
argv[]
的工作原理。是的,非常感谢您的帮助。谢谢你,嗯。。好啊仍然会出现错误,说struct FILE*但参数的类型是char*,您的words()函数也是错误的。您需要@cnicutar的答案,我只是想帮助您了解
argv[]
的工作原理。是的,非常感谢您的帮助。一切都很感激.是的.不过我似乎不能白白读完一本书。我在实践中学习得最好。是的,我似乎不能白白读完一本书。我通过实践学习得最好。