c - system() 复制失败,而 cmd 复制有效

标签 c copy system command escaping

在 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/

相关文章:

c - 编写 linux 守护进程

windows - 如何研究 "frozen"windows系统的问题

c# - 如何从一维数组中获取特定部分的数据?

android - Sqlite 数据库未从 Android Assets 文件夹复制

c - Linux C 中的 read(2) 是如何工作的?

java - 如何使用 Java 在 Windows 上获取卷 ID?

c++ - 无法从 C 代码调用 C++ 函数

C - fgets 在使用 char 数组时神秘地导致段错误

c - 4195808这个号码是怎么回事?

java - 用Java复制文件的标准简洁方法?