c++ - 文件是否需要扩展名才能在 C/C++ 中使用 open() 打开?

标签 c++ c

我正在使用 Xcode 为学校编写一个程序,它要求我们使用 open() 系统调用。我愿意
int input_file_desc = open(input_path, O_RDONLY);
printf("输入文件描述符 %d:\n", input_file_desc);

结果是 -1。该文件的路径是 ~/data_to_read。我在 xcode 中设置了命令行参数。 input_path 是我从命令行获取的 const char *。出于某种原因,如果我将文件名和命令行参数更改为 ~/data_to_read.txt,它就可以正常工作。让我知道是否需要更多信息。谢谢。

编辑:我只尝试使用 .txt 来查看是否是问题所在,但我仍然不知道为什么它首先需要扩展。您可以拥有没有扩展名的文件吗?在这种情况下它应该仍然有效,只要文件路径和参数都没有扩展名,对吧?

最佳答案

看起来您使用的是 C,那为什么要使用 C++ 标记?允许吗? C++ 中有一些简单而好的类来操作文件。

但是你肯定需要在文件名中包含扩展名(input_path),因为同一个目录中可以存在许多同名不同扩展名的文件,所以应该打开哪个?

编辑:应该知道文件扩展名(尤其是在类 UNIX 操作系统中)只是一个“帮助”的东西,它们并不是真正必要的。例如,您可能有一个包含 C++ 代码但没有 .cpp 扩展名的文件,例如它的名称是 foo 只是没有扩展名(甚至有一个疯狂的扩展名如 foo.bar)。您仍然可以使用 g++ 来编译它,因为扩展名并不重要,只要内容对使用该文件的应用程序有效即可。

关于c++ - 文件是否需要扩展名才能在 C/C++ 中使用 open() 打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8960297/

相关文章:

c++ - Boost spirit不动点作为整数解析器

c - 在 C 中使用 fork() 调用时程序进入无限循环

c - 为什么 snprintf 会更改第二个字符串?

c - 尝试反转 char 数组时出错

c++ - 我如何使用 Botan::MemoryRegion?

c++ - Emacs 定制

c - 如何通过查看可执行警告消息找到源函数调用?

c - gcc 选项 : pkg-config --libs --cflags gtk+-3. 0

c++ - 我如何将一个类合并到这个随机生成器中?

c++ - 在 g++ 下获取 stringstream >> my_double 以给出无限值或 NaN 的方法?