c语言中测长度的函数,c读入文本后,用strlen函数测不出正确长度
实际上并没有正确把文件中的内容读取到缓冲区中.
首先看你的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函数测不出正确长度相关推荐
- C 语言中可以调用命令行指令的 system()函数
C语言有一个system函数(在<stdlib.h>头中,C++则为<cstdlib>头),可以用来调用终端命令.原型如下: int system(const char *cm ...
- c不能做oracle关键字,C语言中的关键字不能作变量名,但可以作为函数名。
语言中目的工助学中心的立勤成是(. 个运在整程中输过,键字它们是(,个单重要的据是有三非常. 作变作包括运输费率.自动下级部门继承,目选择不能不同的科,目部门的折旧科设置上级.故用固定管理资产系统不 ...
- c语言中关于文件读取结束的判定,以及feof函数的理解
判断一个文件的读取是否结束,很多人,会想到用feof函数来判定,的确需要用到这个函数,但是仅仅靠这个函数是不够的. 错误用法: #include<stdio.h>int main() {F ...
- c语言利用数组对字符串的处理之自写strlen()函数
#include <stdio.h>int my_strlen(char dest[]); int main(int argc, char const *argv[]) {char a[2 ...
- 将一个4×4的矩阵转置,用一函数实现之。要求:(1)在主函数中用scanf函数输入矩阵元素。(2)将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。
下标调换位置即可,多种实现方式
- C语言中绝对实用的数学函数
盘点C语言中常用的数学函数 在c语言的数学(math)函数库中,有很多不同的数学函数. 有幂函数(pow),绝对值函数(abs/fabs),取整函数(floor/ceil),平方根函数(sqrt),对 ...
- java语言中的合法的变量名_合法的变量名
展开全部 变量可以通过变量名访问.在指令式语言中,变量通常是可变的:但在纯函数式语言(如Haskell)中,变量可能是e68a8462616964757a686964616f3133343365666 ...
- Gox语言中的结构类型-GX10.1
Gox语言中,结构类型(struct)其实并不是很常用,因为Gox语言本身就是动态类型的语言,一般的类似结构体的数据直接用数组或者映射类型就可以了,里面的数据项可以是任意类型,包括嵌套复合类型.对映射 ...
- C语言中可以用字符串常量来,C语言字符串详解
原标题:C语言字符串详解 字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中.同时,C 语言提供了一系列库函数来对操作字符串, ...
最新文章
- Excel事半功倍的应用
- 造车行业百年未有变局之下,一个「老玩家」开始了自己的赶超
- 计算机连接外设的端口驱动,将 KMDF 外设驱动程序连接到串行端口
- [音乐欣赏]Craigie Hill
- 虚拟化涉及的关键技术都有哪些,分别实现了什么功能?
- google bigtable论文原文_CTR论文笔记[1]:Wideamp;Deep
- 大数据基础篇(一):联机分析处理(OLAP) 与 联机事务处理(OLTP)
- oracle dbv验证,ORACLE施用dbv工具检验数据文件是否有坏块
- wps计算机一级考试提纲,2012年计算机一级考试WPSOffice考试大纲
- 单调栈-leetcode-739. 每日温度
- C语言中pow()指数函数的使用问题简述
- Cargo 私有仓库部署
- oracle—ebs_采购功能点操作手册,oracle—EBS_采購功能点操作手册.doc
- MATLAB读dat文件中存储的十六进制数
- 上市前股权激励的方式有哪些
- 大数据技术与应用专业
- 【物联网硬件安全】二、固件分析-固件提取
- 如何做好一名前端Leader
- Java笔记-使用RestTemplate下载大文件,并且设置下载时间
- 国际理论计算机科学大会,顶级会议推荐:计算机科学理论会议5条
热门文章
- C++服务器(一):了解Linux下socket编程
- 台达DOP系列触摸屏与电脑通讯不上时,如何进入系统设置画面修改系统设置从而正常通讯?
- docker部署微服务项目
- RC吸收和单C吸收对模式VDS和后级肖特基二极管的影响?
- Python Scrapy - Ins爬虫
- 随机产生10个整数;设计一个算法找其中的最大的元素和最小的元素,并统计元素之间的比较次数
- openssl从PFX导出私钥、公钥
- Blender:Lowpoly手部建模流程(附blender源文件下载)
- html点击出现表单弹窗
- Intellij IDEA--将Java项目打包为jar包--方法/实例