在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;
}
输出: 系统找不到指定的文件。
有人知道这里发生了什么吗?
答案 0 :(得分:17)
在C字符串内部(以及其他一些使用相同转义规则的语言),\
应为\\
,因为它是转义字符。它允许您以普通文本输入不可打印的字符,例如:
\t
。\r
。\n
。由于\
用作转义字符,我们需要一种方法将实际 '\'
放入字符串中。这是通过序列\\
完成的。
因此,您的行应该是:
system("copy c:\\hello.txt c:\\hello2.txt");
这有时会导致使用以下命令产生模糊错误:
FILE *fh = fopen ("c:\text.dat", "w");
其中\t
实际上是tab
字符,而您尝试打开的文件是:
C : TAB 电子 X 吨 d 一 吨
答案 1 :(得分:4)
或者,所有Windows函数都支持Unix样式斜杠
system("copy c:/hello.txt c:/hello2.txt");
有些人更喜欢这个,因为更容易发现奇怪的'\' 但如果您在邮件中显示此路径,则可能会混淆Windows用户。