实际上并没有正确把文件中的内容读取到缓冲区中.

首先看你的text声明

char text[]="";

// 实际上这是你只是声明了一个仅包含一个'\0'元素的数组, 注意! C中的数组是不可以自己增长的.

// 这就是你的主要问题所在

char text[] = { '\0' }; // 这个是你声明的另一种写法.

至于你为啥运行没报错呢.看你的while循环

fscanf(fp,"%c",&text);

// 从 fp 文件指针中读取一个字符到 text 中

// 这个语句其实可以拆开为

//

// char buffer;

// fscanf(fp, "%c", &buffer);

//

// 所以你只是单纯把读取的这个字符替换掉了原本的 \0 空字符

test++;

// 这是个计数器吧?不知道是不是你写错了,还是我猜测那样.

printf("%s",text);

// 注意这里

// 你使用 %s 这个格式说明符输出 text 这个字符串.

// 众所周知, 一个字符串是以 \0 作为结束的标志的. 但是你声明的缓冲区只有一个位置,还被读取的字符占住了

// 而 text 是存放在 栈 上面的(至于为啥, 貌似超纲了). 所以 printf 会从 text 的位置开始向后查找

// 直到遇到第一个 \0 字符为止, 或者访问错误出现.

// 而栈的实现依赖于系统实现. 比如 windows 就是直接向后退 0xCC 个字节,并初始化为 0xCCCCCCCC.

// 所以实际上, 如果你的操作系统栈的实现是初始化为 0x00000000 的话, 那就不会出错了.

// 因为你的 text 后一个字节就是 \0 字符. 如果在 Windows 上应该会输出一堆的 烫烫烫 (不知道你懂这个梗不 :) )

至于之后的 strlen 的输出也可以同理推导.

c语言中测长度的函数,c读入文本后,用strlen函数测不出正确长度相关推荐

  1. C 语言中可以调用命令行指令的 system()函数

    C语言有一个system函数(在<stdlib.h>头中,C++则为<cstdlib>头),可以用来调用终端命令.原型如下: int system(const char *cm ...

  2. c不能做oracle关键字,C语言中的关键字不能作变量名,但可以作为函数名。

    语言中目的工助学中心的立勤成是(. 个运在整程中输过,键字它们是(,个单重要的据是有三非常. 作变作包括运输费率.自动下级部门继承,目选择不能不同的科,目部门的折旧科设置上级.故用固定管理资产系统不 ...

  3. c语言中关于文件读取结束的判定,以及feof函数的理解

    判断一个文件的读取是否结束,很多人,会想到用feof函数来判定,的确需要用到这个函数,但是仅仅靠这个函数是不够的. 错误用法: #include<stdio.h>int main() {F ...

  4. c语言利用数组对字符串的处理之自写strlen()函数

    #include <stdio.h>int my_strlen(char dest[]); int main(int argc, char const *argv[]) {char a[2 ...

  5. 将一个4×4的矩阵转置,用一函数实现之。要求:(1)在主函数中用scanf函数输入矩阵元素。(2)将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。

    下标调换位置即可,多种实现方式

  6. C语言中绝对实用的数学函数

    盘点C语言中常用的数学函数 在c语言的数学(math)函数库中,有很多不同的数学函数. 有幂函数(pow),绝对值函数(abs/fabs),取整函数(floor/ceil),平方根函数(sqrt),对 ...

  7. java语言中的合法的变量名_合法的变量名

    展开全部 变量可以通过变量名访问.在指令式语言中,变量通常是可变的:但在纯函数式语言(如Haskell)中,变量可能是e68a8462616964757a686964616f3133343365666 ...

  8. Gox语言中的结构类型-GX10.1

    Gox语言中,结构类型(struct)其实并不是很常用,因为Gox语言本身就是动态类型的语言,一般的类似结构体的数据直接用数组或者映射类型就可以了,里面的数据项可以是任意类型,包括嵌套复合类型.对映射 ...

  9. C语言中可以用字符串常量来,C语言字符串详解

    原标题:C语言字符串详解 字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中.同时,C 语言提供了一系列库函数来对操作字符串, ...

最新文章

  1. Excel事半功倍的应用
  2. 造车行业百年未有变局之下,一个「老玩家」开始了自己的赶超
  3. 计算机连接外设的端口驱动,将 KMDF 外设驱动程序连接到串行端口
  4. [音乐欣赏]Craigie Hill
  5. 虚拟化涉及的关键技术都有哪些,分别实现了什么功能?
  6. google bigtable论文原文_CTR论文笔记[1]:Wideamp;Deep
  7. 大数据基础篇(一):联机分析处理(OLAP) 与 联机事务处理(OLTP)
  8. oracle dbv验证,ORACLE施用dbv工具检验数据文件是否有坏块
  9. wps计算机一级考试提纲,2012年计算机一级考试WPSOffice考试大纲
  10. 单调栈-leetcode-739. 每日温度
  11. C语言中pow()指数函数的使用问题简述
  12. Cargo 私有仓库部署
  13. oracle—ebs_采购功能点操作手册,oracle—EBS_采購功能点操作手册.doc
  14. MATLAB读dat文件中存储的十六进制数
  15. 上市前股权激励的方式有哪些
  16. 大数据技术与应用专业
  17. 【物联网硬件安全】二、固件分析-固件提取
  18. 如何做好一名前端Leader
  19. Java笔记-使用RestTemplate下载大文件,并且设置下载时间
  20. 国际理论计算机科学大会,顶级会议推荐:计算机科学理论会议5条

热门文章

  1. C++服务器(一):了解Linux下socket编程
  2. 台达DOP系列触摸屏与电脑通讯不上时,如何进入系统设置画面修改系统设置从而正常通讯?
  3. docker部署微服务项目
  4. RC吸收和单C吸收对模式VDS和后级肖特基二极管的影响?
  5. Python Scrapy - Ins爬虫
  6. 随机产生10个整数;设计一个算法找其中的最大的元素和最小的元素,并统计元素之间的比较次数
  7. openssl从PFX导出私钥、公钥
  8. Blender:Lowpoly手部建模流程(附blender源文件下载)
  9. html点击出现表单弹窗
  10. Intellij IDEA--将Java项目打包为jar包--方法/实例