【问题标题】:CreateFile & ReadFile创建文件和读取文件
【发布时间】:2012-02-03 09:41:52
【问题描述】:

如何通过 CreateFile API 打开 Main 的 argv[](比如 D:\a.txt)中给出的文件名?

CreateFile( ReadBuffer, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 
                                FILE_ATTRIBUTE_NORMAL, NULL );

【问题讨论】:

  • 我建议你不要尝试编写多语言源文件。选择 C ​​或 C++ 之一!
  • 我很抱歉。你现在是我的问题吗?我是新手,所以请忽略一些错误
  • 为什么不用 fopen 和 fread 来代替?
  • MSDN documentation for CreateFile 似乎很全面。如果您不需要那么复杂,您可以尝试使用标准的fopen() functionfopen(argv[1], "w")
  • 是的,这很容易,但我只能使用 CreateFile。

标签: c windows winapi wininet


【解决方案1】:

在我看来,您的问题只是您试图调用这样的函数

Connect(char *filename)
{
    HANDLE hFile = CreateFile(filename, ...);
    ....
}

并且不知道如何获取第一个命令行参数。这样做:

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        printf("Incorrect number of arguments supplied\n.")
        return 1;
    }
    Connect(argv[1]);
    .....
    return 0;
}

请注意,argv 是一个包含 argc 项的数组,其中每个项的类型为 char*。因此,您只需要索引 1 处的项目。索引 0 处的项目是进程名称。

【讨论】:

  • 如果文件名包含 URL 列表,我如何逐行读取文件。因为如果我使用 while 循环阅读直到遇到回车,我必须将所有 InternetCrackUrl、InternetConnect、HttpOpenRequest、HttpSendRequest、HttpQueryInfo 都放在 while 循环中。有没有更好的方法可以使用“while”循环直到回车逻辑。
  • 很抱歉,但这需要作为一个新问题提出,并且您需要向我们展示一些代码。一次是一个问题,cmets 只是为了做一些小的澄清。
  • 哦...好的...我已经将它作为一个带有一些编码的新问题发布,但我认为它很乱。无论如何请看一下。
  • 每当我 CreateFile 时,VB 都会要求在新实例中进行调试并中断调试??????
猜你喜欢
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
相关资源
最近更新 更多