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

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

2020-12-19 14:06
1609

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

    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);


[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

最后于 2020-12-19 15:11 被limee编辑 ,原因:
收藏
免费 0
打赏
分享
最新回复 (3)
雪    币: 10038
活跃值: (7017)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
bluefish蓝鱼 2020-12-19 23:23
2
0
    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]加&呢?
雪    币: 6894
活跃值: (1325)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
严启真 2020-12-20 18:49
3
0
可以getLastError看看
雪    币: 227
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
铁哥哥 2020-12-23 13:50
4
0
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]一样
游客
登录 | 注册 方可回帖
返回