首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在"r+b“模式下使用时,C++11 fgetc会在我的文件中输出0

在C++11中,fgetc函数用于从文件中读取一个字符。在以"r+b"模式打开文件时,文件指针可以在读写操作之间切换。然而,使用fgetc函数时可能会出现问题。

当以"r+b"模式打开文件时,文件指针的位置是可变的,可以在读取和写入操作之间切换。但是,fgetc函数在读取时会将文件指针向前移动,这可能导致在读取之前将文件指针移动到了不正确的位置。

在你提供的情况下,当使用fgetc函数读取文件时,它可能会读取到文件指针当前位置的字符,并将文件指针向前移动一个位置。如果文件指针当前位置是文件的末尾,那么fgetc函数将返回EOF(-1),并且文件指针将保持在文件末尾。

因此,当你在"r+b"模式下使用C++11的fgetc函数时,如果文件指针当前位置是文件的末尾,它将返回0。这是因为EOF在C++中被定义为-1,而在ASCII编码中,字符'0'的值为48。

为了避免这个问题,你可以在调用fgetc函数之前,使用ftell函数获取当前文件指针的位置,并在读取之后使用fseek函数将文件指针恢复到正确的位置。这样可以确保在"r+b"模式下使用fgetc函数时,文件指针的位置始终正确。

另外,如果你需要在云计算领域进行开发,腾讯云提供了一系列与云计算相关的产品和服务。你可以参考腾讯云的官方文档和产品介绍页面,了解更多关于云计算的知识和推荐的产品。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(ECS):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iothub
  • 移动应用开发平台(MADP):https://cloud.tencent.com/product/madp
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言——文件基本操作

C语言中文件基本操作包括:文件打开、文件关闭以及文件输入和输出。除了标准输入、输出文件外,其它文件都必须先打开在使用,使用后必须关闭该文件。...文件指针 文件指针是一个指向文件有关信息指针,这些信息包括文件名、状态和当前位置,他们保存在一个机构体变量使用文件时需要在内存为其分配空间,用来存放文件基本信息。...mode); 在这里,filename 是字符串,用来命名文件,访问模式 mode 值可以是下列值一个: 如果处理是二进制文件,则需使用下面的访问模式来取代上面的访问模式: "rb", "wb...文件关闭 文件使用完毕后,应该使用fclose函数将其关闭。 fclose一般形式为: fclose(fp);//fp是文件指针 当正常关闭文件后,fclose函数返回值为0,否则返回EOF....文件读写 打开文件后,就可以对文件进行读写操作,C语言中提供了多种文件操作函数,接下来我们具体看一

93910

【C】文件操作

, 添加一个新修饰符x, 和w 一起使用, 如下 "wx", "wbx", "w+x" or "w+bx"/"wb+x" 当文件存在时, x会强制使文件访问出错, 而不是清空文件内容....写文件 C中有多种方式可以读写文件, 下面将具体介绍它们 fputc 将一个字符写入到fp所指向输出(不只是文件输出流), 写入成功会返回写入字符, 写入失败会返回EOF, 函数原型为 int...null字符\0, 同时\0不会被复制到输出....除此之外puts输出完内容之后会在内容后面追加上换行符(newline character). fprintf fprintf用来将格式化数据输出输出流, 和printf用法相同, 下面是函数原型...当读到文件末尾时, 也会返回EOF, 并且输出设置文件结束标志(end-of-file indicator).

59410
  • 【C语言篇】文件操作(上篇)

    C程序针对⽂件、画⾯、键盘等数据输⼊输出操作都是通过流操作。 ⼀般情况,我们要想向流⾥写数据,或者从流读取数据,都是要打开流,然后操作。...,⾯都是⽂件打开模式: 都是英文单词缩写,很好记 注意:如果不写路径只写名字,默认是在当前程序文件(.c文件)所在目录下打开或创建,若果需要在其他路径,就需要使用相对路径或者绝对路径 使用绝对路径时用...() { int ch = fgetc(stdin);//从键盘(标准输入流)上读取 fputc(ch, stdout);//将字符输出(写)到屏幕(标准输出流) return 0; } 向文件写字符..., 20, stdin); fputs(arr, stdout); return 0; } 有关文件其他操作会在下一篇博客中介绍 以上就是文件操作(上篇)内容啦,各位大佬有什么问题欢迎评论区指正...,您支持是创作最大动力!

    11410

    【PHP】文件写入和读取详解

    > 设置了写操作权限后,就能正常地写入文件了 运行后打开C:/wamp64/www/text.txt: ? 这次我们把权限设置为只读,并尝试写入文本:'只读模式写入' <?...fgets()其实还有第二个参数,这个参数规定了每一行能读取最大字节数(注意是字节数不是字符数): 【注意】UTF-8编码汉字3字节,字母1字节 下面修改上面的一行,代码,使获取每一行最大字符数为...1即使不手写fclose,PHP脚本执行结束后,也会自动关闭文件 2但在一个长时间执行脚本,如果不写关闭文件fclose(),文件加锁情况会造成操作阻塞,所以,写fclose是个好习惯...);//打印此刻文件指针位置 rewind($fp);//使文件指针移动到0字节位置(初始位置) print_file_pointer($...多出来两个字节是windows回车换行符\n\r \n是换行,占一字节,\r是回车,占一字节,将会介绍 六.Windows和UNIX回车和换行 <?

    4K70

    文件结束符EOF

    >> 关于文件结束符EOF EOF 是 End Of File 缩写。C语言中,它是标准库定义一个宏。人们经常误认为 EOF 是从文件读取一个字符(牢记)。...不错,在用getchar时候也是一直这么想,但是程序就偏偏不着样执行,而是必需读到一个换行符或者文件结束符EOF才进行一次输出。...【补充】本文第二部分关于EOF总结部分,适用于终端驱动处于一次一行模式。也就是虽然getchar()和putchar()确实是按照每次一个字符 进行。...由此可见,由于终端驱动模式不同,造成了getchar()输入结束条件不一样。普通模式需要回车或者EOF,而在一次一个字符模式,则输入一个字符之后就结束了。...返回 EOF 无非是出现了两种情况,一是文件已 经读完; 二是文件读取出错,反正是读不下去了. 请注意: 正常读取情况, 返回整数均小于256, 即0x0~0xFF.

    4.5K10

    C语言:文件操作

    C程序针对⽂件、画⾯、键盘等数据输⼊输出操作都是通过流操作。 ⼀般情况,我们要想向流⾥写数据,或者从流读取数据,都是要打开流,然后操作。...比如: 文件打开和关闭 打开文件就是打开流 读写文件就是读写流 关闭文件就是关闭流 我们只需要关注文件操作进行,流操作是底层操作我们不用关心 ⽂件在读写之前应该先打开⽂件,使⽤结束之后应该关闭⽂...给p赋值NULL p = NULL; return 0; } 文件打开方式 ⽂件使⽤⽅式 含义 如果指定⽂件不存在 “r”(只读) 为了输⼊数据,打开⼀个已经存在⽂本⽂件 出错 “w”(只写) 为了输出数据...⽂件读取结束判定 被错误使 feof 牢记:⽂件读取过程,不能⽤feof函数返回值直接来判断⽂件是否结束。...系统会在内存开辟一块文件缓冲区,当我们把数据写到文件里(也就是硬盘),会先把数据放到输出缓冲区,放满了输出缓冲区,才⼀起送到硬盘上。

    12410

    【C语言】深度探讨文件操作(一)

    pf = NULL; return 0; } test.txt直接在文件打开图: VS上用二进制编辑器打开test.txt 10000二进制表示:00 00 27 10 在内存按小端存储...C程序针对⽂件、画⾯、键盘等数据输⼊输出操作都是通过流操作。 ⼀般情况,我们要想向流⾥写数据,或者从流读取数据,都是要打开流,然后操作。...通过该⽂件信息区信息就能够访问该⽂件。也就是说,通过⽂件指针变量能够间接找到与它关联⽂件。 文件打开和关闭 ⽂件在读写之前应该先打开⽂件,使⽤结束之后应该关闭⽂件。...,默认自动代码文件目录底下自动添加data.txt文件,效果图: 总结mode表⽰⽂件打开模式⾯都是⽂件打开模式: ⽂件使⽤⽅式 含义 如果指定文件不存在 “r”(只读) 为了输⼊数据...stdout输出到终端 fgetc是C语言中用于从文件读取单个字符函数。

    11610

    C语言进阶——文件操作

    所有文件都有唯一标识符,标识符可以分为三部分:文件路径+文件名主干+文件后缀,比如存储电脑中VS文件标识符为: C:\Program Files (x86)\Microsoft Visual...系统会将文件规范化,当使用文件时,系统会在内存开辟一个对应文件信息区,这个信息区包括了文件各种信息(文件名、文件状态、文件位置等),如果对应信息缺失,系统会自动补齐。...fclose(fp);//关闭 fp = NULL;//置空 顺序读写 输入、输出流   介绍文件读写操作前,需要先说明一C语言中“流”(format)概念。...C语言中有三种流:标准输入输出流、文件输入输出流、二进制输入输出流(实际使用时用前两种流,第三种目标流一般为文件)。...文件输出流 注意:为了方便函数介绍,接下来会先介绍写入(输出),再介绍读取(输入)函数 fputc 与 fgetc   fputc 对文件进行单字符写入,fgetc 读取文件单字符 fputc

    27530

    【C语言】文件操作(

    前言 之前文件操作(上)和文件操作(文章从为什么要使用文件再到文件打开和关闭操作给大家解读了文件在内存运行底层原理,但是并未介绍文件详细读写操作。...那么,本文就给大家介绍文件一系列读写操作。 1. 文件读和写 读文件就是从文件读取数据到内存,写文件就是把内存一些数据写入到文件。...有一副图可以这么表示(只是以文件为对象): 这里想告诉大家就是,一定认清谁是读写主体,因为这关系到我们之后所使用函数对应文件打开模式。 2....这个EOFC编译器中被定义为-1。 fputc函数原型: fgetc功能:将文件字符输出到程序。 fputc功能:将程序字符输入到文件。...举个例子,比如我有一个字符串“abc”,现在让num=3,其文件读取只有2个字节内容,因为‘\0’本身就占一个字节。

    8710

    初识C语言·文件操作

    ,程序文件会在后面的预编译章节介绍。...之前章节我们处理数据输入输出都是终端处理,如键盘,电脑屏幕,但有点时候我们会把信息输入到磁盘里面,读取数据时候让磁盘输入数据给内存,在从内存读取数据,计算机读取数据分为好几个等级,从速度快慢分为寄存器...二进制文件是数据在内存不加转化,直接输出到外存文件,数据文件需要经过ASCII码值转化,再输出到外存,所以以ASCII码值存储文件都是文本文件。 那么一个数据是怎么在内存存储呢?...文件打开模式有许多种,如下: 模式有很多种,感兴趣可以自行使用一。...输出数据,那么格式化占位符是必不可少,因为数组名是首元素地址,也就是指针,所以写上了arr,最后打印出来如下: 因为fprintf写参数时候已经空格了,空格也会输出进去,所以打出来也是带空格

    7210

    C语言入门系列之11.文件文件操作

    我们在前面的已经使用到了很多文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。 文件通常是驻留在外部介质(如磁盘等)上使用时才调入内存来。...我们使fp指向某一个文件结构体变量,从而通过该结构体变量文件信息能够访问该文件。 如果有n个文件,一般应设n个指针变量,使它们分别指向n个文件,以实现对文件访问。...fgetc()函数调用: ch = fgetc(fp); 函数功能: 其意义是从打开文件fp读取一个字符并传入chfgetc函数调用,读取文件必须是以读或读写方式打开。...str,因为最后加一个'\0'。...注意: 调用一个输入输出函数后立即检查ferror函数值,否则信息会丢失。 执行fopen函数时,ferror函数初始值自动置为0

    1.5K10

    文件操作学不懂,小代老师带你深入理解文件操作(卷)

    C程序针对⽂件、画⾯、键盘等数据输⼊输出操作都是通过流操作。 ⼀般情况,我们要想向流⾥写数据,或者从流读取数据,都是要打开流,然后操作。...那是因为C语⾔程序启动时候,默认打开了3个流: • stdin - 标准输⼊流,⼤多数环境从键盘输⼊,scanf函数就是从标准输⼊流读取数据。...通过该⽂件信息区信息就能够访问该⽂件。也就是说,通过⽂件指针变量能够间接找到与它关联⽂件。 ⽐如: 4.3 ⽂件打开和关闭 ⽂件在读写之前应该先打开⽂件,使⽤结束之后应该关闭⽂件。...} fgetc 这里解释一为什么ch用int型,因为fputc和fgetc将返回读取字符(提升为 int 值),如果返回失败则返回eof 所以我们这里可以修改下,用这个机制。...} struct stu { char name[5]; int age; }; int main() { struct stu s = {0}; //读取文件中二进制信息文件 FILE

    9610

    文件操作学不懂,小代老师带你深入理解文件操作(下卷)

    //fseek(pf, -1, SEEK_END);//输入文件指针相较于末尾位置偏移量 fseek(pf, 2, SEEK_CUR);//输入文件指针相较于当前位置偏移量 ch = fgetc...⽂件读取结束判定 7.1 被错误使 feof 牢记:⽂件读取过程,不能⽤feof函数返回值直接来判断⽂件是否结束。...⽂件缓冲区 ANSIC 标准采⽤“缓冲⽂件系统” 处理数据⽂件,所谓缓冲⽂件系统是指系统⾃动地在内存为程序每⼀个正在使⽂件开辟⼀块“⽂件缓冲区”。...从内存向磁盘输出数据会先送到内存缓冲区,装满缓冲区后才⼀起送到磁盘上。...(pf); //注:fclose关闭⽂件时候,也会刷新缓冲区 pf = NULL; return 0; }

    6610

    文件顺序读写——顺序读写函数——fgets、fgetc、fputs、 fputc

    ,将函数返回类型定为int(char类型提升为int类型) 1.2 fgetc 返回指定流内部文件位置指示器当前指向字符。...然后,内部文件位置指示器将前进到下一个字符。如果调用时流位于文件末尾,则该函数将返回 EOF 并设置流文件末尾指示器 (feof) 。...举例: 创建一个文件,并向其中写入小写字母a到z,然后关闭文件。接着再以读形式打开这个文件,并将这些字符输出到终端。...注意: 从流读取字符,并将它们作为字符串存储到 str ,直到读取 (num-1) 个字符(第num个字符会被自动读成‘\0’)或到达换行符或文件末尾,以先发生者为准。...换行符‘\n’ 使 fgets 停止读取,但它被函数视为有效字符,并包含在复制字符串。 空字符会自动附加到 str 字符之后。

    10310

    C语言 文件读写实现

    关于C语言文件读写,将介绍下面这几种方式: 字符读写:使用 fgetc() 函数 和 fputc() 函数; 字符串读写:使用 fgets() 函数和 fputs() 函数; 格式化读写...2. fgetc()函数 c=fgetc(fp); //用来从指定文本文件读取一个字符。 1 其中,fp为文件指针,c为要写入字符。...=EOF) //读取文件字符,直到返回fgetc()函数返回EOF { putchar(ch); //显示窗口输出字符 } putchar('\n')...+) //注意数组从0开始 { fputs(s[i],fp); //文件写入数组字符串 fputs("\n",fp)...fgets()函数从文件读取字符直到遇到回车符或EOF为止,函数会在最后一个字符后加上字符串结束标志’\0’;若有EOF,则不予保留。

    1.6K10

    【C语言】看了这篇文章,如果你还不会文件操作的话,把这篇文章给吃了(doge)

    张三:那我们 fopen()  mode 参数 换成 "w" 来试看下会出现什么样子情况。 ヾ(^▽^*)))好哒! 先说下,文件情况。...实际上文件情况和上面的情况都是一模一样,这里就不再追述了,自己可以试。重点讲下文件没在情况。...这种输入输出过程被形象比喻为"流"。 写代码时候,先介绍下文件顺序读写函数一些使用功能。...对于以二进制模式打开流,新位置是通过origin指定参考位置上添加偏移量来定义。...为了将文件作为二进制文件打开,必须在模式字符串包含一个"b"字符。这个额外"b"字符可以被添加到字符串末尾从而形成以下复合模式。所以,我们这里 mode 参数是"wb"。

    83220

    C语言进阶(十四) - 文件管理

    文件电脑磁盘或硬盘上,也相当于输入终端与输出终端,并在文件与运行程序之间进行数据输入与输出操作。 文件是以计算机硬盘为载体存储计算机上信息集合。比如磁盘上文件就是文件。...创建一个FILE*指针变量pf:FILE* pf = NULL; pf是一个指向FILE类型结构体指针变量,我们使pf指向某一个文件对应文件信息区(就是一个结构体变量),那么通过对应文件信息区信息就能够访问该文件...流是对输入输出设备一种抽象。 计算机编程,流是一个类对象,很多文件输入输出操作都以类成员函数方式来提供。 计算机流其实是一种信息转换。...文件 fwrite 二进制输出函数 文件 fgetc()函数 int fgetc(FILE* stream); 头文件为 功能:从文本文件读取一个文件指针stream指向文件缓冲区内部文件位置指示器当前指向字符...字符串末尾'\0'不会写入文件。 与puts()函数不同一点是:不会在文件末尾自动追加换行符'\n' str指向了要写入文件内存一个字符串。

    98510

    与C语言二周目邂逅vlog——6.文件操作

    如果没有⽂件,我们写程序数据是存储电脑内存,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序数据,如果要将数据进⾏持久化保存,我们可以使⽤ ⽂件。...每个被使⽂件都在内存开辟了⼀个相应⽂件信息区,⽤来存放⽂件相关信息(如⽂件名 字,⽂件状态及⽂件当前位置等)。这些信息是保存在⼀个结构体变量。...,⾯都是⽂件打开模式: 1、“r”     以只读方式打开一个文件; 2、“w”    以只写方式打开一个文件; 3、“a”    打开一个文件追加; 4、“rb”   以只读方式打开一个二进制文件...⽂件读取结束判定 5.1 被错误使 feof 牢记:⽂件读取过程,不能⽤feof函数返回值直接来判断⽂件是否结束。...⽂件缓冲区  ANSIC 标准采⽤“缓冲⽂件系统” 处理数据⽂件,所谓缓冲⽂件系统是指系统⾃动地在内存为 程序每⼀个正在使⽂件开辟⼀块“⽂件缓冲区”。

    6610

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券