首页 文章

C - fwrite()没有输出到文件

提问于
浏览
1

从未使用过fwrite(),所以我不确定我到底做错了什么 . 我现在只是测试它,我想要做的就是尝试将一个char写入文件,直到它到达终点 . 我写的文件是我从老师的网站上下载的文件 . 当我检查它的属性时,类型仅列为“文件” . 它应该只是一个空的2MB文件,我们可以编写我们的代码(文件系统实验室,如果有人想知道) . 这是我的代码:

#include <stdio.h>
#include <string.h>
int main()
{
    char c;
    FILE *fp;   
    char testing[2] = {'c'};  

    fp = fopen("Drive2MB", "rw"); 

    fseek(fp, 0, SEEK_SET);     //make sure pointers at beginning of file
    while((c=fgetc(fp))!=EOF)
    {
        fwrite(testing, 1, sizeof(testing), fp);
        fseek(fp, 1, SEEK_CUR);  //increment pointer 1 byte
    }
    fclose(fp);
}

当我运行它时,会弹出一条错误消息,说“Debug Assertion Failed!... Expression :(”无效的文件打开模式“,0)并打印”程序'[3896] filesystem.exe:Native'已退出代码3(0x3) . “

4 回答

  • 0
    fp = fopen("Drive2MB", "r")
    

    以只读方式打开文件

    尝试

    fp = fopen("Drive2MB", "r+");
    
  • 1

    您已打开文件进行读取(这是 rfopen("Drive2MB", "r"); 中的含义) . 您可能无法写入为阅读而打开的文件 .

  • 0

    你是以只读模式打开它

    用r表示fopen

  • 3

    你用fopen的“r”部分打开了文件进行阅读 . 要写入文件,可以在读/写模式或写模式下打开它 .

    // Read/write mode
    fp = fopen("Drive2MB", "r+");
    
    // Write only mode
    fp = fopen("Drive2MB", "w");
    

    我从不喜欢亲自使用“rw” . 当你打开一个文件时,它应该有一个理由被打开 . 您也不需要调用fseek来移动到文件的开头,也不需要使用fseek来推进文件指针 . fopen会自动将其打开到文件的开头,fwrite会自动推进指针 . 只有在“寻找”文件内部才能到达特定点时才应使用fseek .

    在你给出的情况下,你只需要写(“w”)模式,因为你没有从文件中读取 .

相关问题