第4章 字符串和格式化输入/输出

C primer plus 学习笔记 第4章 字符串和格式化输入/输出_数组

4.1 前导程序(略)

 

4.2 字符串简介

字符串(character string)是双引号括起的一串字符,如"zi fu chuang"

4.2.1 char类型数组和null字符

C语言没有专门存储字符串的变量类型,字符串存储在char类型数组中。

在数组末尾有一个空字符(null character)  \0 标记字符串结束。

4.2.2 使用字符串

char name[40];

scanf("%s", name);

printf("Hello, %s\n", name);

 

tip(只有一个字符的字符串和字符不同): ‘x' 和"x“ 是不同的,单引号的是字符;双引号的是字符串,实际上是两个字符x和\0组成的。

4.2.3 strlen()函数

strlen()函数 求字符串字符长度  它的声明包含在string.h中。

4.3 常量和C预处理器

定义常量

 #define NAME value

//注意 后面没;

例如:define PI 3.1415

4.3.1 const限定符

const关键字 限定一个变量为只读,

const int MONTHS = 12;

4.3.2 明示常量

C头文件limits.h和float.h 分别提供了与整数类型和浮点数类型大小限制相关的信息。

 

4.4 printf()和scanf()

输出 和 输入函数,简称I/O函数。

4.4.1 printf()函数

printf()的格式是

printf(格式字符串,待打印项1,待打印项2,...);

例子:printf("My age is %d, my weight is %g kg", 18,66.5);

Tip:printf()函数也有返回值,它返回打印的字符数,如果输出错误,则返回负数。

输出长字符串的3种方式

C primer plus 学习笔记 第4章 字符串和格式化输入/输出_数组_02

4.4.5使用scanf()

scanf()

格式和printf()类似,用来输入

例子:scanf("%d%d",&a,&b);

scanf()返回值是成功读取的项数,而读入失败时,返回0,对文件读写来说,读到文件末尾返回EOF

 

 转换说明:

C primer plus 学习笔记 第4章 字符串和格式化输入/输出_数组_03

 

C primer plus 学习笔记 第4章 字符串和格式化输入/输出_双引号_04

C primer plus 学习笔记 第4章 字符串和格式化输入/输出_C primer plus_05

4.4.6  * 修饰符

如果想通过程序指定字段宽度,可以使用*代替字段宽度

unsigned width, precision;
int numberf = 256;double weight = 242.5;
scanf("%d", &width);printf("number = %*d\n",width,number); //!-指定宽度
scanf("%d%d",&width,&precision);
printf("weight = %*.*f\n",width,precision, weight);//!*指定宽度和精度