通过system()调用另一个程序时输入参数不正确

时间:2014-01-03 10:07:26

标签: visual-studio system filenames

我正在开发一个用Microsoft Visual C ++ 2005 Express开发的程序A.exe。它调用另一个在Microsoft Visual Studio 2005 Pro中开发的程序B.exe。 B.exe是由其他人写的。

A.exe将文本文件作为输入,然后将此文本文件传递给B.exe进行进一步处理。

所有程序和输入文件都在同一个文件夹中。

在A.exe中,我有

char filename[1000] = {0};
sprintf(command, "B.exe .\\%s", filename);
system(command);

在B.exe中,我有

CFile finput;
CString infilename;
long dataLength;

infilename = argv[1];
if (!finput.Open(infilename, CFile::modeRead|CFile::typeText))
{
    printf("Cannot open file %s (%s)\n", infilename, argv[1]);
    exit(0);
}
else
    dataLength = (long)finput.GetLength();

当我运行A.exe时,我得到了

Cannot open file . (.\test.txt)

由于某种原因,它只读取argv [1]字符串的第一个字符作为infilename。我试过了完整的目录,例如C:\ ......,我仍然会得到

Cannot open file C (C:\...)

但如果我自己运行B.exe,即

B.exe .\test.txt

程序运行正常。

我不明白这里有什么问题。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用文件名周围的引号?

B.exe ".\test.txt"