【问题标题】:How can I get a file pointer ( FILE* ) of known file in a specific path?如何获取特定路径中已知文件的文件指针( FILE* )?
【发布时间】:2013-08-26 08:40:16
【问题描述】:

要读取/写入文件,我需要在 Unix 环境中使用 C 语言的文件指针。 我知道文件名和路径,但是如何使用文件名和路径获取文件指针。

【问题讨论】:

  • 因为你在unix env,所以做“man fopen”

标签: c linux file unix


【解决方案1】:
#include <stdio.h>
FILE * pFile;
pFile = fopen ("myfile.txt","w");

【讨论】:

    【解决方案2】:

    像这样导入标准输入/输出标头

    #include <stdio.h>
    

    然后为要打开的文件创建一个指针。

    FILE * file_pointer;
    file_pointer = fopen ("[path to file]","w");
    fclose(file_pointer);
    

    注意:如果文件与源文件不在同一目录中,请指定文件的完整路径。 完成所需操作后不要忘记关闭文件

    【讨论】:

      【解决方案3】:

      根据 ssmithstone 的帖子:

      #include <stdio.h>
      FILE * pFile;
      /* open file and check if was successful */ 
      if ((pFile = fopen("myfile.txt", "w")) == NULL)
      {
      /* couldn't open file; do some error handling if u want */
      }
      else
      {
      /* do s.th. */
      /* close file */
      fclose(pFile);
      }
      

      在这种情况下,w 表示写入。其他选项请查看 Yu Hao 发布的链接。

      【讨论】:

        【解决方案4】:

        看来你是C编程新手,我给你写了一个C程序,你可以分析一下,相信对你一定有帮助。

        #define size 50
        #include <stdio.h> 
        int main() 
        { 
            char name[size]; 
            FILE *file;
            file = fopen("your_file.txt","w");
            printf("Please enter your first name\n");
            scanf("%s",name);
            fprintf(file,"%s",name);
            fclose(file); 
            return 0; 
        }
        

        详情:

        • 在第 7 行,第二个参数 w 用作文件打开模式 - 具有写入权限。
        • 文件指针用于创建/打开名为“your_file.txt”的文件。
        • 函数fprintf() 与printf() 函数相同,但它不是在控制台上写入,而是写入到您的文件中。
        • 最后我们需要关闭文件写入操作因此我们使用fclose()函数

        更新:

        要指定路径,您可以使用 filename.fileextension 编写文件路径 例如:你可以写成

        file = fopen("/home/depthgr8/Desktop/your_file.txt","w"); 
        

        如果您的路径存在,这将在给定路径中创建 your_file.txt,否则将引发运行时异常 - 分段错误(核心转储)

        【讨论】:

        • “那么路径去哪里了?”添加chdir 或将其添加到fopen 的参数中。提及~的问题和解决方案的奖励积分。
        • @Jongware 我只使用了最小的方法,因为默认情况下它采用当前文件路径。我的代码有问题吗,请告诉我,因为它在 linux ubuntu 中运行良好。
        • OP 提到了“文件名和路径”,不清楚 OP 是否知道如何组合它们。我的猜测是 OP 没有,因为通常没有理由分别提及“文件”和“路径”,而对于“文件名”,它可能 包括路径。为了帮助 OP,如果您的示例显示在何处插入、连接或物理更改到另一条路径,则效果会更好。
        • @Jongware 谢谢,你的建议非常好,我忘了添加文件路径,但现在我更新了我的答案,现在看起来更好了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-23
        • 1970-01-01
        • 2010-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多