在 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用户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top