对文本文件读写时遇到一个问题,fread()读所有内容的时候文件的最后一个字符总会重复读,我的代码如下:

    FILE* file = nullptr;
fopen_s(&file, "D:\\test.ini", "r");
const uint32_t nlen = 1024;
std::unique_ptr<char[]> qpFile(new char[nlen]);
char* chTemp = qpFile.get();
memset(chTemp, 0,nlen );
size_t isize = fread(chTemp, sizeof(char), nlen , file);
fclose(file);
file = nullptr;

  test.ini文件内容如下:

  调试 chTemp="[test]\nkey=valuee",多了一个字符,但是读出的字节数isize=16 !!后面又尝试其它内容,总会重复读最后一个字符,

  然后就这样改了下:

    FILE* file = nullptr;
fopen_s(&file, "D:\\test.ini", "r");
const uint32_t nlen = 1024;
std::unique_ptr<char[]> qpFile(new char[nlen]);
char* chTemp = qpFile.get();
memset(chTemp, 0,nlen );
size_t isize = fread(chTemp, sizeof(char), nlen , file);
chTemp[isize] = '\0';//读的重复字符改为结束符
fclose(file);
file = nullptr;

  再看chTemp="[test]\nkey=value",解决问题。

  fread读文本文件总会重复读最后一个字符,那么读二进制文件会不会重复呢?

  找了几个二进制文件读了下,没有重复读!!

  

fread()函数读文本文件重复读最后一个字符问题【已解决】的更多相关文章

  1. MySQL进阶15--TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读

    #TCL事物控制语言 : /* Transaction control language : 事物控制语言 事务: 一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行; ...

  2. SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  3. SQL Server中的事务与其隔离级别之脏读, 未提交读,不可重复读和幻读

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  4. Sql server脏读、更新丢失、不可重复读、幻象读问题及解决方案

    1.脏读:一个事务读到另外一个事务还没有提交的数据.解决方法:把事务隔离级别调整到READ COMMITTED,即SET TRAN ISOLATION LEVEL READ COMMITTED.这时我 ...

  5. Hibernate中的事务隔离问题(脏读、不可重复读、幻读)

    Hibernate中的事务隔离问题(脏读.不可重复读.幻读) 1.事务的特性 事务的四个特性: 1)原子性:事务是进行数据库操作的最小单位,所以组成事务的各种操作是不可分割的 2)一致性:组成事务的各 ...

  6. MySQL事务(脏读、不可重复读、幻读)

    1. 什么是事务? 是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再分割的操作集合(工作逻辑单元): ...

  7. fopen()、fwrite()、fread()函数使用说明与示例

    fopen()函数: 1.作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针. 2.函数原型: FILE * fopen(const char * path,const  ...

  8. Java-Runoob-高级教程-实例-字符串:03. Java 实例 - 删除字符串中的一个字符

    ylbtech-Java-Runoob-高级教程-实例-字符串:03. Java 实例 - 删除字符串中的一个字符 1.返回顶部 1. Java 实例 - 删除字符串中的一个字符  Java 实例 以 ...

  9. Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)

    1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...

  10. .NET:脏读、不可重复读和幻读测试

    目录 背景脏读原因重现和避免不可重复读原因重现和避免幻读原因重现和避免嵌套事务导致的死锁备注 背景返回目录 昨天才发现如果一条数据被A事务修改但是未提交,B事务如果采用“读已提交”或更严格的隔离级别读 ...

随机推荐

  1. Java语言的跨平台性-JDK,JRE和JVM

    Java语言的跨平台性 1 Java虚拟机--JVM JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的 运行环境, ...

  2. 方法的调用-JDK的JShell简单使用

    方法的调用 方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法.在 主方法中,直接写要调用的方法名字就可以调用了. public static ...

  3. immutable.js学习笔记(八)----- immutable.js对象 和 原生对象的相互转换

    一.原生对象转换为immutable.js对象 fromJS 栗子一: 栗子二: 如果数组里面有对象,对象里面有数组,怎么转换呢 复杂结构的转换 二.immutable.js对象转换为原生对象 toJ ...

  4. Python实用代码片段(1)-rot13加密

    Python之禅:THIS.PY 你安装了python之后,能在Lib目录下找到一个this.py的文件,就是此处的内容. s = """Gur Mra bs Clgub ...

  5. SQLSERVER 临时表和表变量到底有什么区别?

    一:背景 1. 讲故事 今天和大家聊一套面试中经常被问到的高频题,对,就是 临时表 和 表变量 这俩玩意,如果有朋友在面试中回答的不好,可以尝试看下这篇能不能帮你成功迈过. 二:到底有什么区别 1. ...

  6. Zstack迁移实战记录1

    https://blog.csdn.net/weixin_43767046/article/details/113748775 这段时间除了那个重度烤机测试(上面链接),还在做另一件事,想再做一个服务 ...

  7. Vue学习笔记之Vue-Router

    1. 概述 Vue Router 是 Vue.js 的官方路由.它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举.功能包括: 嵌套路由映射 动态路由选择 模块化.基于组件 ...

  8. 线性表的顺序存储C++代码

    ​ 我学习顺序表时找不到相关的代码,以及我不清楚写一个线性表需要的知识,当我写出来可以使用的线性表我就把这些内容贴了出来. 前置知识点:结构体,常量指针,new和delete 顺序表的特点: 需要一片 ...

  9. mogdb的一主两备

    # 一.环境准备 |节点类别|主机名|IP||-|-|-||主节点|mogdb1 |192.168.3.68||备节点1|mogdb2 |192.168.3.69||备节点2|mogdb3|192.1 ...

  10. 学习操作系统P4 理解并发程序执行 (Peterson算法、模型检验与软件自动化工具)

    啊 多一个线程,在状态机里也可以理解为多一个栈帧 啊 啊 啊 错误如下图所示 啊 啊 当只有一个人想上厕所时,只有一个旗子被举起来,因此举旗的人可以直接进厕所 当两个人都想上厕所时,看门上的名字可以判 ...