Mac 上 fopen 函数的问题

2023-12-07

我正在 Mac 上制作一个简单的应用程序(OSX Mavericks,用 clang 编译)。 问题是,当我尝试使用相对路径打开文件时,它不起作用。如果我使用绝对路径它就有效。

例如,如果我尝试:fp = fopen("file.txt", "r");

它返回NULL.

它仅在我使用时才有效:fp = fopen(" User/UserName/Project_folder/file.txt", "r");(项目文件夹是我正在编译的文件夹,它有我的file.txt)

该文件位于完全相同的目录中。

我该如何解决这个问题?

同样的代码不久前也运行良好,现在这个代码和其他使用fopen显示同样的问题。


当你跑步时fopen如果没有完整路径,它将使用运行程序的位置的当前工作目录。因此,如果您的工作目录(通过输入获得pwd在外壳中)你从哪里执行你的程序 is ~/my_folder/ and file.txt恰好在~/my_folder/bin/那么即使你的可执行文件在里面~/my_folder/bin/它不会找到file.txt。因为它会寻找~/my_folder/file.txt.

因此,如果您从与 file.txt 不同的目录运行程序,则必须提供绝对路径或提供相对于运行程序的目录的路径。

有关工作目录的信息,请参阅http://www.linfo.org/current_directory.html

Update

如果您有权访问字符串数组参数(argv[]) of main方法。 argv 的第一个元素将包含用于执行程序的路径(来自工作目录)。下面的简单程序简单地打印该参数。

int main(int argc, char *argv[])
{
  printf("Path relative to the working directory is: %s\n", argv[0]);
  return 0;
}

这将打印包括可执行文件名称的相对路径。您可以将可执行文件名称替换为file.txt如果该文件与可执行文件位于同一位置。这样,它将在两种情况下加载:通过双击运行时以及通过导航到可执行文件的位置从命令行运行时。

您可能还必须考虑可能的情况./在。。。之初argv[0]。希望能帮助到你 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mac 上 fopen 函数的问题 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 为什么我不能继承 Enum 的子类?

    考虑以下代码 from enum import Enum class SubclassOfEnum Enum x 5 print SubclassOfEnum x class SubSubclassOfEnum SubclassOfEnum
  • Android,如何将CSS应用到WebView中?

    我想使用 WebView 以便向用户显示一些段落 在 XML 中 我编写了以下代码
  • RedirectToLocal() 转到不同的 url

    以下代码片段来自我的 ASP NET MVC 5 应用程序 public ActionResult Ask string id if this User Identity IsAuthenticated string retUrl Requ
  • 自定义验证不起作用 - Yii2-app-basic-Yii2

    我昨天发布了一个关于单选按钮自定义验证的问题单选按钮上的强制文本字段 我得到了答案 但是 这并不是准确的答案 但是 它解决了我的一个问题 实际上 我有 2 个单选按钮 个人 Firm 当选择具有 个人 值的单选按钮时 公司名称文本框不应是强
  • Typescript:具有不同参数的泛型数组

    考虑一个这样调用的函数 func object object1 key someKeyOfObject1 object object2 key someKeyOfObject2 它有一个数组 我想强制执行key字段保存所保存对象的键obje
  • 将 Java 代码从 Java 8 语法解析为 Java 7 语法的工具? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有谁知道有什么工具可以将使用 lambda 和方法引用的 Java 8 代码 在源代码级别 转换为使用匿名内部类的 Java 7 代码吗 我知道关于
  • PyQt 作为 Windows APPCRASH 崩溃

    我有一个非常短的 PyQt 程序 注意 这是一个 PythonFiddle 链接 这似乎在 Firefox 中严重崩溃 因此代码也发布在下面 它将输出打印到QTextEdit 使用代码从这个答案 当我运行代码 在 Windows 上 时 它
  • 使用 Cucumber 截图

    我刚刚学会如何使用黄瓜 你能告诉我如何完成这段代码吗 您可以使用以下代码片段实现未定义步骤的步骤定义 Then I take a screenshot do pending express the regexp above with the
  • java中如何将字符串转换为运算符

    我想转换一些String对于这样的操作员 int value 1 int valueToCompare 3 String operation lt if value operation valueToCompare some operati
  • 我需要使用多个using 语句吗?

    出于实用性考虑 这两个类都是一次性的 我了解 using 块的作用 但我不确定它可以或需要使用的所有方式 例如 这是正确的吗 using MyClass myClass new MyClass params myClass name Ste
  • Numpy:我应该使用 newaxis 还是 None?

    在 numpy 中 可以使用切片语法中的 newaxis 对象来创建长度为 1 的轴 例如 import numpy as np print np zeros 3 5 np newaxis shape shape will be 3 1 5
  • Internet Explorer 页面上的 SendMessage user32dll

    我的桌面上打开了一个 Internet Explorer 页面 网页名称为TEST 使用 user32 dll 中的 FindWindow 我可以在窗口上获取处理程序 在此页面中 我有一个名为 Go 的按钮 还有两个名为 Name 和 Su
  • 自动从 Google AppMaker 数据源导出数据

    有谁知道我们怎样才能生成报告从数据中数据源在 Google AppMaker 中自动地 例如 在凌晨 12 点生成报告 而不是每次用户需要报告时手动单击部署中的导出数据 我在上面看到过类似的东西从 Google AppMaker 导出数据但
  • 使用 CData 部分包装属性 - XML 序列化 C#

    我需要以这样的方式序列化我的对象 即我想要的属性将包裹在 CData 部分中 我希望我能做这样的事情 public class Order JsonProperty public int OrderId get set JsonProper
  • 如何在 WCF 服务中同步数据库访问?

    我以前使用过 WCF 服务 现在我有一个新项目即将开始 我仍处于设计阶段 我想知道处理以下场景的最佳方法是什么 我将让多个客户端同时连接到我的 WCF 服务 在服务上触发不同的方法 操作合约 A 触发的一些方法只是纯粹的 读取 方法 例如
  • C# 从 XE 获取当前汇率

    我需要在我的应用程序上显示当前汇率 是否可以检索汇率http www xe com XE转换器 这是我尝试过的 public string CurrencyConversion decimal amount string fromCurre
  • 如何将 Elasticsearch 与 MongoDB 结合使用?

    我浏览过许多关于配置 Elasticsearch for MongoDB 以索引 MongoDB 中的集合的博客和网站 但没有一个是简单的 请向我解释一下安装elasticsearch的逐步过程 其中应包括 配置 在浏览器中运行 我将 No
  • 使用批处理检查路径是文件还是文件夹[重复]

    这个问题在这里已经有答案了 我试图使用批处理文件检查程序中定义的路径是文件还是文件夹 一切工作正常 但是当我尝试提供不是文件或文件夹或无权访问它的路径时 它会给出输出 它是一个文件 这是代码 ECHO off SETLOCAL ENABLE
  • 调整 HTML 地图图像的大小

    在一个小型网站中 页面仅由使用 html 地图的单个图像和多个链接组成 我想调整图像的大小 较小的图像 但调整所有图像的大小并更改所有链接坐标是非常痛苦的 div style text align center width 586px ma
  • Mac 上 fopen 函数的问题

    我正在 Mac 上制作一个简单的应用程序 OSX Mavericks 用 clang 编译 问题是 当我尝试使用相对路径打开文件时 它不起作用 如果我使用绝对路径它就有效 例如 如果我尝试 fp fopen file txt r 它返回NU