`
yesjavame
  • 浏览: 659662 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

C字符串长度定义规范

阅读更多
C字符串长度定义规范

(转载请注明来源于金庆的专栏)

因为总是见到C字符串长度相关的错误, 所有定个规范出来, 有利于减少错误.

关键在于C字符串有个结尾0, 处理时需要注意.

定义字符串长度有两种方式, 一种是用字符串的大小, 一种是字符串的长度.
字符串的大小即内存空间的大小, 而串长度加1才是所需空间.

正确:
char str[MAX_SIZE];
char str[MAX_LEN + 1];

错误:
char str[MAX_SIZE + 1];
char str[MAX_LEN];

如strncpy()之类的函数处理字符串时, 如果要省略结尾0时, 应如下:

strncpy(dst, src, MAX_LEN);

strncpy(dst, src, MAX_SIZE - 1);

分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    字符类型 char 1~2000字节 固定长度字符串,长度不够的用空格补充 varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) ...

    中国银保监会银行业金融机构监管数据标准化规范(2019版).xlsx

    12. 数据格式:报送数据若为字符串,则字符串中不能包含\n、\r、双引号等控制字符和转义字符,且字符串首尾不能包含空格。报送数据若为浮点数,则必须为123.789形式,前后不可补0、补+号。报送数据若为整数,则必须...

    上海电机学院C语言实训答案

    从键盘输入字符(最多为80个),遇到回车键输入结束,将输入的字符串按奇偶位置拆分,奇数位上的字符在前,偶数位上的字符在后,重新组成新的字符串输出,例如输入: ab12cd3456fg,则经过程序处理后输出: a1c35fb2d...

    点菜系统数据库说明书.doc

    "枚举类型 忙、闲 " "23"点菜时间 "时间类型 "24 "备注 "文本类型 " "25"房间名称 "字符串类型 "26 "服务员职 "文本类型 " " " "长度为20 " "位 "长度为20字符 " "27"厨师姓名 "文本类型 "28 "厨师性别 "字符串类型 ...

    点菜系统数据库设计(2).doc

    "枚举类型 忙、闲 " "23"点菜时间 "时间类型 "24 "备注 "文本类型 " "25"房间名称 "字符串类型 "26 "服务员职 "文本类型 " " " "长度为20 " "位 "长度为20字符 " "27"厨师姓名 "文本类型 "28 "厨师性别 "字符串类型 ...

    正则表达式

    就像字符串直接量被定义为包含在引号内的字符一样, 正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符.所以,JavaScript可能会包含如下的代码: var pattern = /s$/; 这行代码创建一个新的RegExp对象,并将...

    入门学习Linux常用必会60个命令实例详解doc/txt

    -a:将/etc/fstab中定义的所有文件系统挂上。 -F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。 -f:通常用于除错。它会使...

    JavaScript基础和实例代码

    6.1.2 获取目标字符串长度 6.1.3 连接两个字符串 6.1.4 验证电子邮件地址的合法性 6.1.5 返回指定位置的字符串 6.1.6 在URL中定位字符串 6.1.7 分隔字符串 6.1.8 将字符串标记为HTML语句 6.1.9 常见属性和方法汇总 ...

    源文件程序天下JAVASCRIPT实例自学手册

    6.1.2 获取目标字符串长度 6.1.3 连接两个字符串 6.1.4 验证电子邮件地址的合法性 6.1.5 返回指定位置的字符串 6.1.6 在URL中定位字符串 6.1.7 分隔字符串 6.1.8 将字符串标记为HTML语句 6.1.9 常见属性和方法汇总 ...

    数据库系统.pdf.pdf

    有一个关系:学生(学号,姓名,系别),规定学号的值域是 8 个数 字组成的字符串,这一规则属于()。 A.实体完整性约束 B.参照完整性约束 C.用户自定义完整性约束 D.关键字完整性约束 答案: C 13.公司中有多个部门和多...

    HTML开发王

    3.5.5 文本字符串 3.5.6 使用uri 3.5.7 使用颜色 3.5.8 使用长度 3.5.9 内容类型(mime类型) 3.5.10 语言代码 3.5.11 字符编码 3.5.12 单字符 3.5.13 日期和时间 3.5.14 链接类型 3.5.15 介质描述符 3.5.16 脚本数据 ...

    开发培训入门PPT资料.pptx

    数量 金额 距离等,可用于计算 T 6 6 '000000' 时 间(格式: HHMMSS) X 1 1 - 65535 X'00' 十 六进制 STRING 动态长度的字符串,日志文本,描述性文字等 XSTRING ASCII ABAP的数据类型-基本(jīběn)数据类型 第六...

    C# 控制台应用程序——随机数

    生成一个从0到strTableChar.Length的数字a,然后使用strTableChar[a]就可以随机返回一个字母,重复n次(n等于防伪码的长度),这样就可以组合到一串随机字符串,也就是防伪码了。 6、思路及技巧 1)随机数生成...

    mysql数据库的基本操作语法

    空字符串“”是不等于null,0也不等于null create table temp( id int not null, name varchar(255) not null default ‘abc’, sex char null ) 上面的table加上了非空约束,也可以用alter来修改或增加非空约束 ...

    C#微软培训资料

    2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 ...

    JAVA面试题最全集

    编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...

    PL/SQL Developer8.04官网程序_keygen_汉化

     varchar2 用来存储变长的字符串,其使用语法为: varchar2[(size)] 其中size为可选,表示该字符串所能存储的最大长度。 在PL/SQL中声明变量与其他语言不太一样,它采用从右往左的方式声明,比如声明一个number类型...

    net学习笔记及其他代码应用

    答:string str = null 是不给他分配内存空间,而string str = \"\" 给它分配长度为空字符串的内存空间。 25.请详述在dotnet中类(class)与结构(struct)的异同? 答:Class可以被实例化,属于引用类型,是分配在内存的...

Global site tag (gtag.js) - Google Analytics