gpt4 book ai didi

无法在 OS X 下使用 freopen() 中的相对路径打开文件?

转载 作者:行者123 更新时间:2023-12-02 09:27:30 26 4
gpt4 key购买 nike

我正在学习使用 freopen() 将标准输入重定向到文件。

我使用的是 OS X 10.10,并且使用 Xcode 来运行我的代码。

这是我的代码:

#include <stdio.h>

int main(int argc, const char * argv[]) {
freopen("../data.in", "r", stdin);
char a;
scanf("%c", &a);
fclose(stdin);
printf("%c", a);
return 0;
}

编辑我在终端中使用 tree 命令来显示文件结构,输出为

.
├── competition
│   └── main.c
├── competition.xcodeproj
│   ├── project.pbxproj
│   ├── project.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   ├── xcshareddata
│   │   │   └── competition.xccheckout
│   │   └── xcuserdata
│   │   └── yang.xcuserdatad
│   │   └── UserInterfaceState.xcuserstate
│   └── xcuserdata
│   └── yang.xcuserdatad
│   ├── xcdebugger
│   │   └── Breakpoints_v2.xcbkptlist
│   └── xcschemes
│   ├── competition.xcscheme
│   └── xcschememanagement.plist
├── data.in
└── makefile

我还检查了 freopen() 的输出。该函数返回NULL

我什么也没得到,而当我将“../data.in”更改为绝对路径时,我得到了正确的输出。

如何使用相对路径修复它?

最佳答案

相对路径与程序源所在位置无关。它实际上与“当前工作目录”相关(基本上,在 shell 窗口中输入 pwd 来查看您的工作目录是什么,然后运行程序,如果 ../data 中有一个文件.in,它会起作用,否则你可能会得到各种奇怪的错误)。

您还应该检查 freopen 的返回值,如果它返回 NULL,则发生错误,您可能应该处理该问题。

关于无法在 OS X 下使用 freopen() 中的相对路径打开文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36618518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com