_popen错误地使用报价符号

_popen work incorrectly with quotation symbol

本文关键字:符号 popen 错误      更新时间:2023-10-16

我有这样的代码块:

FILE * file = _popen(""d:\a b\sql.exe" "d:\a b\la.db"", "r");
_pclose(file);

它不能工作并返回结果:

"d:\a"不被识别为内部或外部命令、可操作程序或批处理文件。

但是当我在第二个参数上将引号" 更改为 ' 时 =>没关系

\"d:\\a b\\la.db\" => 'd:\\a b\\la.db'"
FILE * file = _popen(""d:\a b\sql.exe" 'd:\a b\la.db'", "r");
_pclose(file);

我希望_popen像cmd一样工作.exe那么,我该如何处理这种情况。

尝试在空格前放置反斜杠。我刚刚写了这个代码片段(我有一个名为 popen 的文件.exe它只打印"test"),它似乎可以工作。

#include <cstdio>
#include <cstdlib>
int main()
{
    FILE * pFile;
    char buffer[100];
    pFile = _popen(""C:\test 1\popen.exe"", "r");
    if (pFile == NULL) perror("Error opening file");
    else
    {
        while (!feof(pFile))
        {
            if (fgets(buffer, 100, pFile) == NULL) break;
            fputs(buffer, stdout);
        }
        _pclose(pFile);
    }
    return 0;
}