【问题标题】:Move a text file from one location to another in Turbo C++在 Turbo C++ 中将文本文件从一个位置移动到另一个位置
【发布时间】:2018-12-14 09:27:51
【问题描述】:

我一直在尝试使用以下代码 sn-p 将文本文件从一个位置移动到另一个位置(移动到桌面上的文件夹)。但是使用DOSBox的REN函数或者C++的rename函数的方法都失败了。

char billfile[] = "Text.txt";
char path[67] = "ren C:\\TURBOC3\\Projects\\";
strcat(path, billfile);
strcat(path, " C:\\Users\\Admini~1\\Desktop\\Bills");
system(path);

还有其他替代方案吗?

P.S.:这是一个学校项目,必须使用 Turbo C++

【问题讨论】:

  • rename函数失败后的errno是什么?
  • Turbo C++ 是否提供对 Windows API 函数的访问?在这种情况下,您应该使用正确的函数:docs.microsoft.com/en-us/windows/desktop/api/winbase/…
  • 只想说抱歉,您被 DOS 虚拟机和 1980 年代工具链卡住了。
  • 可能与 ren 是内置的有关。您是否至少验证了path 是您所期望的?
  • @BasileStarynkevitch 为什么你期望system("ren A B") 设置一个有意义的errno?

标签: c++ turbo-c++ dosbox


【解决方案1】:

对应本站stdio.h的TurboC运行库支持重命名功能。

因此,即使您不得不使用像 TurboC++ 这样完全过时的工具,也不必为了重命名文件而使用 system 函数生成新进程。

【讨论】:

  • rename() 函数在独立程序中运行。当重命名同一项目文件夹中的文件时,重命名功能也适用于项目文件,但我不能使用 rename() 将文件从项目文件夹转移到任何其他文件夹(比如桌面)。
  • @CPROG 所以你看到了在错误的边界战斗的结果。您应该考虑使用未过时的工具。试试像 Visual Studio 社区版这样的现代工具。我看不出有任何理由为石器时代编程。
  • 使用更现代的IDE会容易得多,但由于是学校项目,我们别无选择,只能使用Turbo
  • 用双面或石斧教学生是完全不负责任的。什么样的学校隐藏着这样免费、有效、易学的工具:visualstudio.microsoft.com/vs/community
【解决方案2】:

如果您使用的是 Win32 API,请考虑查看函数 CopyFile 或 CopyFileEx。

您可以通过类似于以下方式使用第一个:

CopyFile(szFilePath.c_str(), szCopyPath.c_str(), FALSE);

这会将在 szFilePath 的内容中找到的文件复制到 szCopyPath 的内容中,如果复制不成功,将返回 FALSE。要了解有关函数失败原因的更多信息,您可以使用 GetLastError() 函数,然后在 Microsoft 文档中查找错误代码。

【讨论】:

  • 答案摘自以下链接:stackoverflow.com/questions/17929713/…
  • 这不是重复的,但它是一个错误的答案。问题是关于移动文件,而不是复制。
  • 复制操作后可以删除源文件。
  • Windows?这是 DOSBox。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多