我的程序运行正常一年多了。今天我将文件复制到另一个系统并编译每个程序。
当我从Dev-c ++编译并运行时,它将数据写入文本文件,就像它应该的那样,但当我点击它创建的可执行文件时,它不会将数据写入文件。其他一些像输入/输出似乎都有用。
我错过了什么程序?
好的,我已经给了程序Full permision但它仍然没有写。
我很困惑,至少如果它在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: %s\n", cwd);
}
scanf(y);
}
好的,我使用了getcwd(),这是它给我的消息
chdir()error():没有这样的文件或目录
如何立即设置目录。
答案 0 :(得分:2)
当您双击该文件时,听起来您的工作目录未正确设置。如果您可以访问日志,请使用getcwd()
并记录它返回的内容。
答案 1 :(得分:1)
我还没有Raymond Chen的心灵调试能力,但我知道一种可以帮助你的工具:Process Monitor。使用它可以准确地查看应用程序尝试写入哪些文件,以及它失败的原因。
答案 2 :(得分:1)
也许你看错了位置。程序会将文件写入当前工作目录,当您双击可执行文件并从Dev-C ++运行时,该文件可能会有所不同。
答案 3 :(得分:0)
正如其他人所说,工作目录可能不正确。
如果创建.exe的快捷方式,则可以在快捷方式属性中设置工作目录。右键单击快捷方式,选择“属性”,然后更改“开始”属性。
当然,更好的答案是在打开文件时将文件的完整路径放入文件名字符串中。
答案 4 :(得分:0)
最好和最简单的方法是提供输出文件的完整路径,而不仅仅是文件名。这样,您可以确定文件的位置,而不必在任何地方搜索它。如果您使用的是Windows,则输出文件可能位于system32中的某个位置。但我可能是错的。
答案 5 :(得分:0)
可能是Windows使用反斜杠,因此请尝试“\ tmp”而不是“/ tmp”。
此外,如果您的所有文件都在同一目录中,那么您可以使用find&amp;用open("
open("c:\\your_directory_here\