我有一个像这样的代码块:
FILE * file = _popen("\"d:\\a b\\sql.exe\" \"d:\\a b\\la.db\"", "r");
_pclose(file);
它无法工作并返回结果:
'd:\a' is not recognized as an internal or external command, operable program or batch file.
但是当我在第二个参数中改变引号“to”时,>没关系
\"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一样工作。所以我该如何处理这种情况。
答案 0 :(得分:1)
尝试在空格前加一个反斜杠。我刚刚写了这段代码片段(我有一个名为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;
}