从未使用过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 回答
以只读方式打开文件
尝试
您已打开文件进行读取(这是
r
在fopen("Drive2MB", "r");
中的含义) . 您可能无法写入为阅读而打开的文件 .你是以只读模式打开它
用r表示fopen
你用fopen的“r”部分打开了文件进行阅读 . 要写入文件,可以在读/写模式或写模式下打开它 .
我从不喜欢亲自使用“rw” . 当你打开一个文件时,它应该有一个理由被打开 . 您也不需要调用fseek来移动到文件的开头,也不需要使用fseek来推进文件指针 . fopen会自动将其打开到文件的开头,fwrite会自动推进指针 . 只有在“寻找”文件内部才能到达特定点时才应使用fseek .
在你给出的情况下,你只需要写(“w”)模式,因为你没有从文件中读取 .