1

私はこのようなコードのブロックを持っています:

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

それは動作せず、結果を返します:

'd:\a' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

しかし、2番目のパラメーターで引用符 " を ' に変更すると => OK

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

cmd.exe のように動作するようにしたいのです_popenが、この場合はどうすればよいですか。

4

1 に答える 1

1

スペースの前にバックスラッシュを入れてみてください。このコード スニペットを作成したところです ("test" を出力するだけの popen.exe というファイルがあります)。

#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;
}
于 2013-11-05T06:11:54.140 に答える