【发布时间】:2010-04-10 23:52:37
【问题描述】:
我试图在 Mac OS X 中使用 C++ 打开一个文本文件,但总是遇到总线错误。
我不在乎把文件放在哪里。我只需要阅读它。我写错地址了吗?还是说 Bus Error 有其他原因?
FILE *dic;
dic = fopen("DICT","rb");
dic = fopen("./DICT","rb");
dic = fopen("~/DICT","rb");
dic = fopen("~//DICT","rb");
【问题讨论】:
-
那是 C,不是 C++。您确定要使用 C++ 而不是 C?
-
如果文件存在于当前目录中,我不明白为什么它不起作用。你能发布更多的上下文代码吗?
-
嗯,比预期的行为。如果
dic是NULL,则不能将其作为fseek的参数。它恰好可以在 PC 上运行,因为在这种情况下可以打开文件,所以dic不是NULL。 -
...当然你应该检查从
fopen返回的值,即使你拼写正确的文件路径! -
~可能不会像您期望的那样扩展(因为它通常由外壳扩展)。您需要使用其他方法来查找主目录,例如应该存在于 BSD/OS X 下的$HOME或getwpent。