无法写入文件
Not able to write to a file
我的程序已经正常运行了一年多。今天,我把这些文件复制到另一个系统上,并编译了每个程序。
当我从Dev-c++编译和运行时,它会像预期的那样将数据写入文本文件,但当我点击它创建的可执行文件时,它不会将数据写入文件。其他一切,比如输入/输出,似乎都起作用了。
我错过了什么程序?
好的,我已经给了这个程序完全许可,但它仍然不写。
我很困惑,至少如果我在C++环境中编译它时它没有运行,我可以继续检查我的代码,但只有.exe不起作用,还有其他建议吗?
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream bss2;
bss2.open("expat.txt",ios::app);
bss2 << 2 ;
bss2.close();
}
这是我测试过的示例代码。
如何查找当前工作目录?
好的,我把一条线路改成
bss2.open("c:\expat2.txt",ios::app);
现在它在exe文件中正常工作。
但是有50多个文件,我更希望我不必拼写每个文件的新路径,有什么解决方法可以将目录设置为以前使用的目录?
更新4:
#define _POSIX_SOURCE
#include <unistd.h>
#undef _POSIX_SOURCE
#include <stdio.h>
main() {
char cwd[256];
int y;
if (chdir("/tmp") != 0)
perror("chdir() error()");
else {
if (getcwd(cwd, sizeof(cwd)) == NULL)
perror("getcwd() error");
else
printf("current working directory is: %sn", cwd);
}
scanf(y);
}
好的,我使用了getcwd(),这是它给我的消息
chdir()error():没有这样的文件或目录
我现在该如何设置目录。
双击文件时,听起来您的工作目录设置不正确。如果可以访问日志,请使用getcwd()
并记录它返回的内容。
我还没有Raymond Chen的心理调试能力,但我知道有一个工具可以帮助你:Process Monitor。使用它可以准确地查看应用程序要写入的文件,以及失败的原因。
也许你看错了位置。程序会将文件写入当前工作目录,当您双击可执行文件并从Dev-C++运行时,这可能会有所不同。
最好、最简单的方法是给出输出文件的完整路径,而不仅仅是文件名。这样,您就可以确定文件的位置,而不必到处搜索。如果使用的是Windows,则输出文件可能位于system32中的某个位置。但我可能错了。
正如其他人所说,工作目录可能不正确。
如果创建.exe的快捷方式,则可以在快捷方式属性中设置工作目录。右键单击快捷方式,选择"属性",然后更改"起始位置"属性。
当然,更好的答案是在打开文件时将文件的完整路径放入文件名字符串中
可能是Windows使用了反斜杠,所以请尝试使用"\tmp"而不是"/tmp"。
此外,如果所有文件都在同一目录中,则可以使用find&用open("c:\your_directory_here
替换open("
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到