fopen函数发生错误返回值是什么

fopen()函数

  1. 作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针。
  2. 函数原型:
FILE * fopen(const char * path,const char * mode); 
 -- path: 文件路径,如:"F:\Visual Stdio 2012\test.txt" 
 -- mode: 文件打开方式,例如: 
 "r" 以只读方式打开文件,该文件必须存在。 
 "w" 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 
 "w+" 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 
 "a" 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留) 
 "a+" 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留) 
 "wb" 只写打开或新建一个二进制文件,只允许写数据。 
 "wb+" 读写打开或建立一个二进制文件,允许读和写。 
 "ab" 追加打开一个二进制文件,并在文件末尾写数据。 
 "ab+"读写打开一个二进制文件,允许读,或在文件末追加数据。 
 --返回值: 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。 

fwrite()函数

  1. 作用:在C语言中fwrite()函数常用语将一块内存区域中的数据写入到本地文本。
  2. 函数原型:
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); 
 -- buffer:指向数据块的指针 
 -- size:每个数据的大小,单位为Byte(例如:sizeof(int)就是4) 
 -- count:数据个数 
 -- stream:文件指针 

注意:返回值随着调用格式的不同而不同

  •  调用格式:fwrite(buf,sizeof(buf),1,fp);

成功写入返回值为1(即count)

  •  调用格式:fwrite(buf,1,sizeof(buf),fp);

成功写入则返回实际写入的数据个数(单位为Byte)

  •  收尾工作

写完数据后要调用fclose()关闭流,不关闭流的情况下,每次读或写数据后,文件指 针都会指向下一个待写或者读数据位置的指针。

案例

下面代码可将1024个字(int)写入到文本文件,fwrite的调用中,size是sizeof(int),count是DATA_SIZE

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#include <stdlib.h> 
#define DATA_SIZE 1024 
 
int main() 
{ 
 unsigned int *dataPtr = NULL; 
 dataPtr = (unsigned int *)malloc(sizeof(int)*DATA_SIZE); 
 for(unsigned int i=0;i<DATA_SIZE;i++) 
 { 
 dataPtr[i] = i; //初始化缓存区 
 } 
 FILE *fp = fopen("F:\\Labwindows cvi\\test.txt","w"); 
 fwrite(dataPtr,sizeof(int),DATA_SIZE,fp); 
 fclose(fp); 
 free(dataPtr); 
 system("pause"); 
 return 0; 
} 

fread()函数

  •  作用:从一个文件流中读取数据
  •  函数原型如下:
size_t fread(void *buffer, size_t size, size_t count, FILE *stream); 
 -- buffer:指向数据块的指针 
 -- size:每个数据的大小,单位为Byte(例如:sizeof(int)就是4) 
 -- count:数据个数 
 -- stream:文件指针 

注意:返回值随着调用格式的不同而不同:

  • 调用格式:fread(buf,sizeof(buf),1,fp);

读取成功时:当读取的数据量正好是sizeof(buf)个Byte时,返回值为1(即count)

否则返回值为0(读取数据量小于sizeof(buf))

  • 调用格式:fread(buf,1,sizeof(buf),fp);

读取成功返回值为实际读回的数据个数(单位为Byte)

案例

定义两个FILE变量,一个用于write,一个用于read,写完后要close掉,然后再打开,然后读。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
 
 
int main(int argc, char *argv[]) 
{ 
 FILE *filp = NULL; 
 char fileDir[] = "/home/yangzhiyuan/Documents/test.txt"; 
 char dataPtr[] = "Helloworld"; 
 printf("sizeof(dataPtr) = %ld\n",sizeof(dataPtr)); 
 filp = fopen(fileDir,"w+"); /* 可读可写,不存在则创建 */ 
 int writeCnt = fwrite(dataPtr,sizeof(dataPtr),1,filp); /* 返回值为1 */ 
 //int writeCnt = fwrite(dataPtr,1,sizeof(dataPtr),filp); /* 返回值为11 */ 
 printf("writeCnt = %d\n",writeCnt); 
 fclose(filp); 
 
 FILE *fp = NULL; 
 fp = fopen(fileDir,"r"); 
 char buffer[256]; 
 int readCnt = fread(buffer,sizeof(buffer),1,fp); /* 返回值为0 */ 
 //int readCnt = fread(buffer,1,sizeof(buffer),fp); /* 返回值为11 */ 
 printf("readCnt = %d\n",readCnt); 
 fclose(fp); 
 
 printf("%s\n",buffer); 
 exit(0); 
}

原创文章,作者:站长,如若转载,请注明出处:https://www.heikehao.com/29355.html

(0)
站长站长
上一篇 2023年12月23日 10:13
下一篇 2023年12月23日 10:16

相关推荐

  • 用水扑救的是哪一种

    扑救林火的方法主要有以下几种: 1、人工扑打 是扑灭地面火常用的方法,也是经济而有效的方法。其灭火机理在于:用扑火工具压火,减少氧气的供应;用扑火工具扫除已着火的可燃物和火灰、火炭…

    技术投稿 2023年12月12日
  • int与char[]的相互转换

    #include “stdafx.h” #include <stdio.h> #include “windows.h” …

    技术投稿 2023年12月8日
  • 先做事后付款的黑客的联系qq

    标题:黑客的联系QQ:先做事后付款,引发你内心的好奇!随着科技的发展,黑客行业也在不断壮大,他们的手段越来越高明,让人防不胜防。而今天,我们要介绍的是一种特殊类型的黑客——以先做事后付款的黑客,他们的联系QQ成为了他们独特的标志。在网络世界中,黑客的存在一直备受

    2024年3月28日
  • 十六进制转十进制方法有什么?c16进制转换10进制算法教程

    在学习数学和从事专业工作的时候,十六进制转十进制方法有什么?对数字进行进制转换,看似容易,但数目加大时,借助工具,反而是更方便的,本期为大家带来十六进制转十进制的方法教学。 十六进…

    2023年11月20日 技术投稿
  • 怎么黑进对方手机看微信聊天记录?利用这些保证微信聊天记录安全

    远程查看别人微信聊天记录,这个听起来颇具挑战性的任务实际上是可以实现的。在这里,我们将探讨一种合法且道德的方式来实现这一目标,以帮助您更好地了解和关心您所关心的人。 首先,我们要明…

    2023年12月17日
  • 黑客大户追款官网

    在这个数字化的时代,我们的生活越来越依赖于互联网。随之而来的是网络犯罪的激增,黑客们悄然而至,窃取我们的个人信息、财产甚至是身份。而今,我们迎来了一个令人振奋的消息:黑客大户追款官网,将为我们揭秘隐匿网络黑暗的钥匙!黑客大户追款官网是一个致力于为受害者追

    2024年3月28日
  • 黑基论坛:揭秘黑客网站的作用与影响

    在当今数字化时代,黑客文化和网络安全一直备受关注。黑客网站作为黑客文化的重要组成部分,不仅吸引着安全专家和黑客,也成为了许多普通网民好奇探索的对象。在这个信息繁荣的网络世界中,“黑…

    技术投稿 2023年12月22日
  • 追款黑客先追回到账后再付佣金联系方式

    在数字时代,网络诈骗层出不穷,许多人因此遭受了巨大的损失。有一群与众不同的黑客,他们以追款黑客的身份,帮助受害者追回被骗走的资金。他们的独特之处在于,他们只收取佣金,当资金安全返还给受害者后,才会收取一定比例的佣金。这个令人好奇的行为背后隐藏着怎样的故事呢?这

    2024年3月28日
  • pythonc++混合编程

    编写 c => python 的接口文件 // vectory_py.c extern “C” { vector<point_t>* new_vector(){ …

    2023年11月25日
  • 24小时黑客联系方式是什么?网络安全维护的关键策略

    在当今数字化的世界中,网络黑客联系方式的存在给网络安全带来了巨大威胁。这些联系方式使得黑客可以轻易地交流、合作和策划各种违法活动,包括数据盗窃、网络攻击等。了解这些联系方式的种类与…

    技术投稿 2023年12月16日

网上怎么找黑客帮忙多少钱

怎么网上找到的黑客?黑客的收费标准是什么呢?找黑客一般费用是多少?


找黑客帮忙一般要多少钱

黑客服务的价格范围很广,主要取决于服务的类型和难度。根据提供的信息如下:


1.攻击服务:


攻击范围:这包括了通过扫描入侵、种植木马等方式对他人计算机实施非法控制,并利用被控制的计算机对网站、App等服务器发起攻击


。1

2.特定账户的售价:


账户信息:如垂钓者、而勒索软件,显示市场对特定黑客工具的需求和价格波动。

3.攻击工具:

“RIG”攻击工具包的租用费用,提供了不同时长的选择。

4.远程访问木马(RAT)的价格:

相比去年有所下降,显示出市场价格的波动。

5.DDOS攻击的报价:

DDOS攻击服务按不同时长定价选择。

黑客服务的价格因服务类型、难度、以及市场需求的不同而有很大的差异。这些价格反映了黑客服务市场的复杂性和多样性,同时也提醒人们网络安全的重要性。