You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++函数内部调用System()函数?调用时文件处理问题求解

解决C++函数内调用system()的文件处理问题

你的代码里有两个关键问题导致文件处理出错,我来帮你逐一排查并解决:

1. fopen参数的错误

你写的FILE *in = fopen (in, "r");里,第一个参数in是未定义的变量,应该使用传入的函数参数f。而且因为f是std::string类型,需要转换成C风格字符串才能传给fopen,修正后应该是:

FILE *in = fopen(f.c_str(), "r");

当然,如果这个fopen操作不是你调用外部程序必须的步骤,也可以直接删掉这段代码。

2. system()命令字符串的拼接错误

你直接写system("./my_exe_file f output");时,这里的f会被当成字面量字符串"f",而不是你传入的函数参数f的实际值。要把变量的真实内容嵌入到命令里,必须先拼接出完整的命令字符串:

void call(std::string f){ 
    // 拼接包含真实文件名的命令字符串
    std::string cmd = "./my_exe_file " + f + " output";
    // 将C++字符串转为C风格字符串传给system
    int status = system(cmd.c_str()); 
}

这样system执行的命令就会把f对应的实际文件名替换进去,和你在外部直接写死文件名的效果完全一致。

本质上,字符串字面量不会自动识别并替换其中的变量名,必须手动把变量内容拼接到命令字符串中,再传递给system函数。

内容的提问来源于stack exchange,提问作者user280163

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:31:19