文档章节

C Primer Plus 第4章 字符串和格式化输入输出--4.2 字符串简介

idreamo
 idreamo
发布于 2016/05/11 05:18
字数 687
阅读 10
收藏 0

4.2.1 char数组类型和空字符

字符串就是一个或多个字符的序列。

“Zing went the strings of my heart!”

双引号不是字符串的一部分,它只是通知编译器其中包含了一个字符串。

C没有为字符串定义专门的变量类型,而是把它存储在char数组中。

字符串中的字符存放在相邻的存储单元中,每个字符占用一个单元;而数组由相邻的存储单元组成,所以把字符串存储到数组中是很自然的选择。

数组中最后一个位置显示\0,这个字符就是空字符,C用它来标记字符串的结束。

空字符不是数字0;它是非打印字符,其ASCII的码的值为0.

该字符的存在意味着数组的单元数必须至少比要存储的字符数多1.

数组,就是同一类型的数据元素的有序序列。

使用字符串开始复杂起来了,必须创建一个数组,把字符串的字符逐个的放进数组中,还要记着在结尾添加一个\0.

4.2.2 使用字符串

%s告诉printf()要打印一个字符串。

请注意:scanf()开始读取输入以后,会在遇到的第一个空白字符空格(blank)、制表符(tab)、或者换行符(newline)处停止读取。

一般情况下,使用%s的scanf()只会把一个单词而不是把整个语句作为字符串读入。

C使用其他输入函数来处理一般字符串(例如gets()).

字符串和字符

字符串"x"和字符常量'x'不同。

其中一个区别是'x'属于基本类型char,而"x"则属于派生类型char数组。

第二个区别是"x"实际上是由两个字符('x'和空字符'\0')组成。

4.2.3 Strlen()函数

sizeof运算符,它以字节为单位给出数据的大小。

strlen()函数,是以字符为单位给出字符串的长度。

sizeof给出的数目比strlen()要大,是因为它把用来标志字符串结束的不可见的空字符也计算在内。

sizeof是否使用圆括号,取决于您是想获取一个类型的大小还是想获取某个具体量的大小。圆括号对于类型是必需的,而对于具体量是可选的。不过,在所有情况下都使用圆括号会更好。

strlen()和sizeof都是重要的编程工具。

 

 

© 著作权归作者所有

共有 人打赏支持
idreamo
粉丝 17
博文 139
码字总数 224743
作品 0
青岛
产品经理
私信 提问
C Primer Plus 第11章 字符串和字符串函数 11.3 字符串输出

11.3.1 puts( )函数 puts( )函数的使用很简单,只需要给出字符串参数的地址。程序清单11.8列出了输出字符串的多种方式。 程序清单11.8 put_out.c程序 输出如下: 注意,每个字符串都单行显示...

idreamo
2016/08/19
11
0
小朋友学C语言(42):gets和fgets

一、gets()函数 原型:char gets(char str); 头文件:stdio.h 例1 (1)在Windows系统中的运行结果 (2)在Linux中用GCC进行编译 运行结果 例2 运行结果 在windows下输入: 输出 在windows下...

海天一树X
2018/11/22
0
0
C Primer Plus(5版)第8章习题讲解(三)

小伙伴们,对C语言编程有疑问的,可以加微信交流:poo_poo或者扫描我的头像,验证时请注明是“知友” 第8章的复习题还剩下6、7、8三题没有讲解了。本文讲下第6、8题,第7题先不讲了。 1. 第6...

石家的鱼
2017/07/11
0
0
C Primer Plus 第11章 11.13 编程练习答案

1、设计并测试一个函数,可以从输入读取n个字符(包括空格、制表符和换行符),把结果存储在一个数组中,这个数组的地址通过参数来传递。 2、修改并测试练习1中的函数,使得可以在n个字符后,...

idreamo
2016/09/22
388
0
算法第四版-文字版-下载地址-Robert Sedgewick

下载地址:https://download.csdn.net/download/moshenglv/10777447 算法第四版,文字版,可复制,方便copy代码 目录: 第1章 基 础 ....................... . .............................

老莫offer
2018/11/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql 查询当天、本周,本月,上一个月的数据

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天 SELECT * FROM 表名 wher......

BraveLN
今天
2
0
Android Multimedia框架总结(六)C++中MediaPlayer的C/S架构

前面几节中,都是通过java层调用到jni中,jni向下到c++层并未介绍 看下Java层一个方法在c++层 MediaPlayer后续过程 frameworks/av/media/libmedia/MediaPlayer.cpp 找一个我们之前熟悉的setDa...

天王盖地虎626
今天
3
0
【Linux】【MySQL】CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行)

1、前言   框框博客在线报时:2018-11-07 19:31:06   当前MySQL最新版本:8.0.13 (听说比5.7快2倍)   官方之前表示:MySQL 8.0 正式版 8.0.11 已发布,MySQL 8 要比 MySQL 5.7 快 2 ...

Code辉
今天
5
0
oracle dg备库重建redolog:ora-00313,ora-00312

trace文件: Errors in file /crbank/dbs/app/product/diag/rdbms/rdbs/dbs/trace/dbs_mrp0_24445130.trc: ORA-00313: open failed for members of log group 8 of thread 1 ORA-00312: onl......

hnairdb
今天
3
0
深入分析Java I/O的工作机制 (一)

1.Java的I/O类库的基本架构 先说一下什么是类库:可以说是类的集合,类库包括接口、抽象类、具体类等。 I/O是机器获取和交互信息的主要渠道。 java在I/O上也一直在做持续的优化,在1.4版开始...

java菜分享
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部