【问题标题】:Creating a file using fopen()使用 fopen() 创建文件
【发布时间】:2015-10-26 23:39:27
【问题描述】:

我只是在创建一个基本的文件处理程序。 代码是这样的:

#include <stdio.h>
int main()
{
FILE *p;
p=fopen("D:\\TENLINES.TXT","r");
if(p==0)
{
    printf("Error",);

}

fclose(p);
}

这给出了错误,我无法创建文件尝试重新安装编译器并为文件使用不同的位置和名称,但没有成功。 我使用的是 Windows 7,编译器是 Dev C++ 版本 5

【问题讨论】:

  • 注意:把if(p==0)改成if(p==NULL)
  • This is giving Error,...请告诉我们...
  • 详细的RTFM总是一个好主意:iso-9899.info/n1570.html#7.21.5.3
  • 澄清一下,这里使用的首字母缩写词可能意味着:Read-The-Full-Manual

标签: c file-handling dev-c++ null-pointer


【解决方案1】:

fopen(const char *filename, const char *mode) 中的mode 参数从:

p=fopen("D:\\TENLINES.TXT","r");//this will not _create_ a file
if(p==0)                //  ^

到这里:

p=fopen("D:\\TENLINES.TXT","w");//this will create a file for writing.
if(p==NULL)             //  ^   //If the file already exists, it will write over
                                //existing data.

如果您想添加内容到现有文件,您可以使用“a+”作为打开模式。

See fopen()(了解更多开放模式,以及有关 fopen 系列函数的其他信息)

【讨论】:

    【解决方案2】:

    根据tutorialfopen在发生错误时返回NULL。因此,您应该检查p 是否等于NULL

    另外,在printf("Error",); 中,省略字符串后的逗号。

    【讨论】:

    • 使用0 进行比较并不好,但有效。不创建文件的原因是另一回​​事。
    • 是的,这就是我使用 should 的原因。
    • 那么你的答案会更适合作为评论,因为它没有回答问题。
    • printf 部分不仅仅是推荐,所以我决定在这篇文章中包含这两个部分。
    【解决方案3】:

    是的,您应该以写入模式打开文件。 哪个创建文件。读取模式只是读取内容 否则你可以使用“r+”来读写。

    【讨论】:

      【解决方案4】:

      fopen() 语法:

      FILE *fp;
      fp=fopen(“data.txt”,”r”);
      if(fp!=NULL){
      //file operations 
      }
      

      FILE 必须大写。函数 fopen() 将打开一个文件“data.txt” 在阅读模式下。 fopen() 执行以下重要任务。

      1. 它搜索磁盘以打开文件。

      2. 如果文件存在,它会将文件从磁盘加载到内存中。如果发现文件内容很大,那么它会逐部分加载文件。

      3. 如果文件不存在,此函数返回 NULL。 NULL 是头文件“stdio.h”中的宏定义字符。这表明它无法打开文件。 fopen() 函数失败可能有以下原因。 a.当文件处于保护或隐藏模式时。 b.该文件可能被其他程序使用。

      4. 它定位一个字符指针,它指向第一个字符 文件的作者。每当一个文件 打开的字符指针指向文件的第一个字符

      【讨论】:

        猜你喜欢
        • 2014-06-27
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多