• Linux用C++ rz 命令怎么将文件重命名呢?


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 xzq338 2024-03-30 17:39 采纳率: 85.7% 浏览 2 首页/ 编程语言 / Linux用C++ rz 命令怎么将文件重命名呢? c++linux Linux用C++ rz 命令怎么将文件重命名呢?我在Linux用使用C++ system("rz -b")这个代码接收文件,怎么能够获取这个文件的名字呢,然后再把它重命名。 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 檀越剑指大厂 Java领域优质创作者 2024-03-30 17:39
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      在Linux使用C++ rz命令接收文件后,可以通过以下步骤获取文件名并重命名:

      1. 使用C++的popen函数执行rz -b命令,并通过标准输出流读取rz命令的输出结果,以获取接收到的文件名。

        #include 
        #include 
        #define MAX_BUFFER_SIZE 1024
        
        std::string getReceivedFileName()
        {
            FILE *pipe = popen("rz -b", "r");
            if (!pipe)
            {
                std::cerr << "Error executing rz command!" << std::endl;
                return "";
            }
        
            char buffer[MAX_BUFFER_SIZE];
            std::string receivedFileName = "";
        
            while (!feof(pipe))
            {
                if (fgets(buffer, MAX_BUFFER_SIZE, pipe) != NULL)
                {
                    receivedFileName += buffer;
                }
            }
        
            pclose(pipe);
        
            // Remove newline character from the end of the file name
            receivedFileName.erase(receivedFileName.length() - 1);
        
            return receivedFileName;
        }
        
      2. 调用上述函数获取接收到的文件名,并使用C++的rename函数将文件重命名为所需的新名字。

        int main()
        {
            std::string receivedFileName = getReceivedFileName();
            if (receivedFileName.empty())
            {
                std::cerr << "No file received!" << std::endl;
                return 1;
            }
        
            std::string newFileName = "new_name.txt"; // 你要给文件设置的新名字
        
            if (rename(receivedFileName.c_str(), newFileName.c_str()) == 0)
            {
                std::cout << "File renamed successfully!" << std::endl;
            }
            else
            {
                std::cerr << "Error renaming file!" << std::endl;
            }
        
            return 0;
        }
        

        解决方案摘要:

        1. 使用popen函数执行rz -b命令,并通过标准输出流读取rz命令的输出结果,以获取接收到的文件名。
        2. 使用rename函数将文件重命名为所需的新名字。

        修改后的代码如下:

        #include 
        #include 
        #define MAX_BUFFER_SIZE 1024
        
        std::string getReceivedFileName()
        {
            FILE *pipe = popen("rz -b", "r");
            if (!pipe)
            {
                std::cerr << "Error executing rz command!" << std::endl;
                return "";
            }
        
            char buffer[MAX_BUFFER_SIZE];
            std::string receivedFileName = "";
        
            while (!feof(pipe))
            {
                if (fgets(buffer, MAX_BUFFER_SIZE, pipe) != NULL)
                {
                    receivedFileName += buffer;
                }
            }
        
            pclose(pipe);
        
            // Remove newline character from the end of the file name
            receivedFileName.erase(receivedFileName.length() - 1);
        
            return receivedFileName;
        }
        
        int main()
        {
            std::string receivedFileName = getReceivedFileName();
            if (receivedFileName.empty())
            {
                std::cerr << "No file received!" << std::endl;
                return 1;
            }
        
            std::string newFileName = "new_name.txt"; // 你要给文件设置的新名字
        
            if (rename(receivedFileName.c_str(), newFileName.c_str()) == 0)
            {
                std::cout << "File renamed successfully!" << std::endl;
            }
            else
            {
                std::cerr << "Error renaming file!" << std::endl;
            }
        
            return 0;
        }
        

      展开全部

      评论 编辑记录
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      整数型常量池
      HTTP网络协议讲解
      学习Maven Web 应用
      C/C++轻量级并发TCP服务器框架Zinx-框架开发002: 定义通道抽象类
      前端面试八股文
      “香蕉大王”的转型升级,能否扩大市场份额?
      FileManager/本地文件增删改查, Cache/图像缓存处理 的操作
      【趣学算法】第二章 算法之美(下)
      学习笔记1--自动驾驶系统架构
      Kubernetes:(二)了解k8s组件
    • 原文地址:https://ask.csdn.net/questions/8081494