| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2056 人关注过本帖
标题:DeleteFile api的问题
取消只看楼主 加入收藏
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
结帖率:66.67%
收藏
已结贴  问题点数:1 回复次数:1 
DeleteFile api的问题
程序代码:
#include<windows.h>
#include<stdio.h>
#include<wchar.h>

using namespace std;
int main(int argc, PTCHAR argv[]) {
    /*
        删除文件 api.exe -d 文件路径
        复制文件 api.exe -c 路径1 路径2
        移动/重命名文件 api.exe 路径1 路径2
    */

    if (0 == lstrcmp(L"-d", argv[1]) && argc == 3) { // 满足条件是否是 第二个参数为-d 并且 命令行参数的个数为3  该函数结束的两个值都是为LPCWSTR
        DeleteFile(argv[2]);  //unicode的时候 接收的值为 LPCWSTR
        printf("删除成功");
    }
    else {
        printf("删除失败");
    }
    printf("argv[0]:%ls\n", argv[0]);
    printf("argv[1]:%ls\n", argv[1]);
    printf("argv[2]:%ls\n", argv[2]);
    printf("参数数量为:%d", argc);

    system("pause");
    return 0;
    

}


发现删除不了,命令为 1.exe -d 1.txt 发现报错失败,然后尝试打印argv[0] 1 2 发现都为空 为什么哇
搜索更多相关主题的帖子: 路径 文件 api printf exe 
2019-11-25 20:36
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
收藏
得分:0 
回复 2楼 rjsp
老哥 我写好了,这样我写的是不是都是基于宽字节UNICODE来写的,但是我还有一个问题,宏定义中比如PTCHAR,我转到定义的时候是这样子的,还有自己查阅了才知道wmain函数是main函数的宽字符版本,一般在Unicode编码下使用,但是我不懂比如下面得ifdef UNICODE才进行下面的操作,他是如何知道我们定义的字符集是UNICODE,是根据wmain入口函数直接帮你认为是UNICODE的吗,还是根据项目属性来的
图片附件: 游客没有浏览图片的权限,请 登录注册
,还是有什么关系不懂了。。。。。如果可以的话 能够解答下吗
程序代码:
#ifdef  UNICODE                     // r_winnt

#ifndef _TCHAR_DEFINED
typedef WCHAR TCHAR, *PTCHAR;



程序代码:
#include<windows.h>
#include<stdio.h>

int wmain(int argc, wchar_t * argv[]) {
    /*
        删除文件 api.exe -d 文件路径
        复制文件 api.exe -c 路径1 路径2
        移动/重命名文件 api.exe -m 路径1 路径2
    */

    if (argc == 3 && 0 == lstrcmp(L"-d", argv[1])) { // 满足条件是否是 第二个参数为-d 并且 命令行参数的个数为3  该函数结束的两个值都是为LPCWSTR


        if (!DeleteFile(argv[2])) {  //unicode的时候 接收的值为 LPCWSTR
            printf("删除失败 \n");
        }
        else {
            printf("删除成功 \n");
        }


    }else if (argc == 4 && 0 == lstrcmp(L"-c", argv[1])) {
        if (!CopyFile(argv[2], argv[3], true)) { //第三个参数为true那么文件如果已经存在则不进行覆盖
            //复制失败,其中一种可能是存在文件同名,copyfile 返回值为0x50
            if (getchar() == 'y') {
                if (!CopyFile(argv[2], argv[3], false)) { //第三个参数为false那么文件如果已经存在则直接覆盖
                    printf("文件复制失败");
                }else {
                    printf("文件复制成功");
                }
            }
        }else
            printf("文件复制成功! \n");
    }else if (argc == 4 && 0 == lstrcmp(L"-m", argv[1])) {
        //进行移动/重命名文件的操作
        if (!MoveFile(argv[2],argv[3])) {  //movefile 和 copyfile api 参数的数据类型一样,用法也类似
            printf("文件移动失败! \n");
        }else {
            printf("文件移动成功! \n");
        }
    }else {
        printf("参数错误! 请重新输入");
    }

    system("pause");
    return 0;
    

}
2019-11-26 10:55
快速回复:DeleteFile api的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029505 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved