在 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:TABext.dat.
关于c - system() 复制失败,而 cmd 复制有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/237703/