system() 复制失败,而 cmd 复制有效
题
在 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;
}
输出:该系统找不到指定的文件。
有人知道这是怎么回事吗?
解决方案
在 C 字符串(以及许多其他使用相同转义规则的语言)中, \
应该 \\
因为它是转义字符。它允许您以普通文本输入不可打印的字符,例如:
- 制表符
\t
. - 回车符
\r
. - 换行符
\n
. - 其他的我不会详细介绍。
自从 \
用作转义字符,我们需要一种方法来放置 实际的 '\'
成字符串。这是通过序列完成的 \\
.
因此你的线路应该是:
system("copy c:\\hello.txt c:\\hello2.txt");
这有时会导致命令出现模糊错误,例如:
FILE *fh = fopen ("c:\text.dat", "w");
哪里的 \t
实际上是 tab
字符和您要打开的文件是:
C:标签eXt.dAt.
其他提示
或者,所有Windows函数都支持Unix样式斜杠
system("copy c:/hello.txt c:/hello2.txt");
有些人更喜欢这个,因为它更容易发现一个奇怪的'\'。
但如果您在邮件中显示此路径,则可能会混淆Windows用户。
不隶属于 StackOverflow