1

在 cmd.exe 中,我可以执行命令“copy c:\hello.txt c:\hello2.txt”,它运行良好。但是在我的 C 程序中,我运行了这段代码并得到了以下错误:

#include <iostream>

using namespace std;

int main()
{
    system("copy c:\hello.txt c:\hello2.txt");
    system("pause");

    return 0;
}

输出:系统找不到指定的文件。

有人知道这里发生了什么吗?

4

2 回答 2

17

在 C 字符串内部(以及许多其他使用相同转义规则的语言),\应该是\\因为它是转义字符。它允许您以普通文本输入不可打印的字符,例如:

  • 制表符\t
  • 回车符\r
  • 换行符\n
  • 其他的我不会详细介绍。

由于\用作转义字符,我们需要一种将实际 '\'值放入字符串的方法。这是用序列完成的\\

因此,您的行应该是:

system("copy c:\\hello.txt c:\\hello2.txt");

这有时会导致以下命令出现模糊错误:

FILE *fh = fopen ("c:\text.dat", "w");

其中\t实际上是tab字符,您要打开的文件是:

            c:TABext.dat.

于 2008-10-26T07:56:58.617 回答
4

或者,所有 Windows 函数都支持 Unix 风格的斜杠

system("copy c:/hello.txt c:/hello2.txt");

有些人更喜欢这个,因为它更容易发现一个奇怪的'\'。
但如果您在消息中显示此路径,可能会使 Windows 用户感到困惑。

于 2009-11-27T14:22:19.790 回答