【问题标题】:fopen doesnt work with string parameterfopen 不适用于字符串参数
【发布时间】:2012-12-12 13:49:42
【问题描述】:

我有一个如下所示的字符矩阵

char files[4][10];

并且在矩阵中这些字符数组被保存。

文件1.txt 文件2.txt 文件 3.txt 文件4.txt

当我尝试对这个矩阵使用 fopen 时,我无法打开文件。我的代码是这样的:

    FILE *file;

    file = fopen(files[0],"rb");

    if(file == NULL){
       printf("cannot open");
    }
    else printf("opened");

这段代码给出了输出:无法打开。我在哪里做错了?

【问题讨论】:

  • 1) 文件是否在同一目录中? 2)你检查files[0]是否真的包含正确的字符串?
  • printf("cannot open %s: %s\n", files[0], strerror(errno)); 找出失败的原因以及files[0] 是否包含您所相信的内容。
  • 是的,它包含正确的文件并且它们在同一个目录中
  • @user1772101,程序二进制文件和文件是否在同一目录中无关紧要。程序在同一个目录中执行确实很重要。
  • 我从另一个文件中读取这些文件名。因此我认为问题不在于。

标签: c fopen


【解决方案1】:

会想到两件事:

  • file1.txt 在您调用可执行文件的目录中不可用
  • 您没有说明如何初始化文件数组。可能是你不是 0 终止字符串。

【讨论】:

  • 我无法正确理解你的问题,但我在矩阵的每一行末尾添加了 \n 字符。
  • @user1772101 那是你的问题,“0 终止”意味着最后一个字符应该是'\0'。没有换行符。
  • 我在每行末尾添加了 \0 字符,但仍然不起作用
  • Ehm,你为什么接受这个答案?什么有效?请显示更多代码
  • @user1772101 不接受那些不能解决问题或不属于您的问题的答案。因为,如果你接受了错误的,许多其他人可能会面临同样的问题。那么,这可能会给他们带来更多麻烦。
猜你喜欢
  • 2016-09-19
  • 2013-09-14
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2014-07-13
  • 2012-07-25
  • 2012-04-19
  • 2014-08-04
相关资源
最近更新 更多