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

时间:2010-12-06 06:44:24

标签: c file fwrite

从未使用过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 :(得分:3)

您已打开文件进行阅读(这是r代表的fopen("Drive2MB", "r");)。您可能无法写入为阅读而打开的文件。

答案 1 :(得分:1)

你是以只读模式打开它

将r +用于fopen

答案 2 :(得分:0)

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

以只读方式打开文件

陷阱>

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

答案 3 :(得分:0)

您已使用fopen的“r”部分打开了要读取的文件。要写入文件,可以在读/写模式或写模式下打开它。

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

// Write only mode
fp = fopen("Drive2MB", "w");

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

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