首页
社区
课程
招聘
未解决 [求助]怎么把命令行参数传递给CreateFile函数
发表于: 2020-12-19 14:06 1712

未解决 [求助]怎么把命令行参数传递给CreateFile函数

2020-12-19 14:06
1712

我的代码是这样写的,编译的时候报错啊

    if( argc < 2 )
    {
        printf("usage: %s %s/n", argv[0], "infile");
        exit(1);
    }


    HANDLE hFile = CreateFile(&argv[1],
                              GENERIC_READ,
                              FILE_SHARE_READ | FILE_SHARE_WRITE,
                              NULL,
                              OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);



===================


我把代码改成了这样,参数传出来了。可是编译的时候
最后的一行还是报错,哪里错了啊?

    if( argc < 2 )
    {
        printf("usage: %s %s\n", argv[0], "infile");
        exit(1);
    }

    strcpy(lpFileName, argv[1]);
    printf("%s",lpFileName);

    HANDLE hFile = CreateFile(lpFileName,
                              GENERIC_READ,
                              FILE_SHARE_READ | FILE_SHARE_WRITE,
                              NULL,
                              OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-12-19 15:11 被limee编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 10879
活跃值: (7787)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
    if( argc < 2 )
    {
        printf("usage: %s %s/n", argv[0], "infile");
        exit(1);
    }


    HANDLE hFile = CreateFile(argv[1],
                              GENERIC_READ,
                              FILE_SHARE_READ | FILE_SHARE_WRITE,
                              NULL,
                              OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);

你为什么要给argv[1]加&呢?
2020-12-19 23:23
0
雪    币: 9732
活跃值: (1680)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
3
可以getLastError看看
2020-12-20 18:49
0
雪    币: 227
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
CreateFile的ANSI版本的函数原型是
WINBASEAPI
HANDLE
WINAPI
CreateFileA(
    _In_ LPCSTR lpFileName,
    _In_ DWORD dwDesiredAccess,
    _In_ DWORD dwShareMode,
    _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    _In_ DWORD dwCreationDisposition,
    _In_ DWORD dwFlagsAndAttributes,
    _In_opt_ HANDLE hTemplateFile
    );
所以,你第一个参数直接传argv[1]就行,跟打印的时候传的字符串argv[0]一样
2020-12-23 13:50
0
游客
登录 | 注册 方可回帖
返回
//