具有完整文件路径的 fopen() 不会创建文件,并且使用 Xcode macOS 在 C 中检查时没有错误

问题描述 投票:0回答:1

我是 C 新手,刚刚开始学习如何在 Xcode 中创建和写入文件。我了解一些 Python 和 bash,并且能够读取、写入、追加、创建、删除、移动文本文件,但这个问题让我有点困惑。

基本上,我尝试使用 fopen() 在写入模式下创建并打开一个新的 .txt 文件。我尝试仅使用“filename.txt”方法,假设创建的文件与我当前打开的项目位于同一文件夹中。构建成功,但该文件夹中没有创建新文件。我尝试在 cwd 中查找它,但也不存在。接下来,我尝试了完整文件路径方法,尝试将其放在桌面上,然后尝试了项目文件夹的路径,然后尝试了用户/用户/文件夹中新文件夹的更简单的直接路径。每次构建成功但到处都找不到文件。

我第一次尝试检查错误是使用类似“if( perror() ) else {printf("Nothing bad"}" 的方法,它有效并返回“Nothing Wrong!”

其他人也有类似的问题,但似乎他们都返回了错误,我不知道如何解决它,因为除了文件没有在指定位置创建之外,似乎没有任何错误。

其他可能有用的注意事项:我在 iCloud Drive 上有一个桌面,如果您选中“获取信息”,我计算机上的大多数文件都存储在 iCloud/... 位置。

int main() {

FILE * fpointer = fopen("C:/Users/(name)/Documents/c_projects/Giraffe/Giraffe/employees.txt", "w");


fclose(fpointer);

return 0;
}
c xcode macos fopen
1个回答
0
投票

有两个问题:

  1. “C:/Users/(name)/Documents/c_projects/Giraffe/Giraffe/employees.txt”绝对不是Mac OS路径,它看起来更像是Windows路径。也许你应该使用“/Users/(name)/Documents/c_projects/...”

  2. 您不检查错误。如果不成功,

    fopen
    返回
    NULL
    ,但你忽略它并使用NULL文件指针调用
    fclose
    ,这是未定义的行为。

你想要这样的东西:

int main() {
  FILE * fpointer = fopen("some path", "w");
  if (fpointer != NULL)
  {
    do something with fpointer 
    ...
    fclose(fpointer)
  }
  else
  {
    // display error message and/or take appropriate action
  }
 
  return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.