字符串简介
- 双引号仅告知编译器它括起来的是字符串,正如单引号用于标识单个字符一样。
- 字符串都被储存在char类型的数组中。

注意数组末尾位置的字符\0。这是空字符(null character),C语言用它标记字符串的结束。 - 字符串和字符
字符串常量"x"和字符常量’x’不同。区别之一在于’x’是基本类型(char),而"x"是派生类型(char数组);区别之二是"x"实际上由两个字符组成:'x’和空字符\0

strlen()和sizeof
char name[40];
scanf("%s",name);
printf("Your name of %zd letters occupies %zd memory cells.\n",strlen(name), sizeof name);
- sizeof运算符报告,name数组有40个存储单元。
- 只有前11个单元用来储存Serendipity,所以strlen()得出的结果是11。name数组的第12个单元储存空字符,strlen()并未将其计入。

常量和C预处理器
#define TAXRATE 0.015
编译程序时,程序中所有的TAXRATE都会被替换成0.015。这一过程被称为编译时替换(compile-time substitution)
const限定符
const关键字,用于限定一个变量为只读
const int MONTHS = 12; // MONTHS在程序中不可更改,值为12
明示常量
C头文件limits.h和float.h分别提供了与整数类型和浮点类型大小限制相关的详细信息。每个头文件都定义了一系列供实现使用的明示常量。
limits.h头文件包含以下类似的代码:
#define INT_MAX +32767
#define INT_MIN -32768
这些明示常量代表int类型可表示的最大值和最小值。
printf()和scanf()
##转换说明(conversion specification)

printf()

printf()的转换说明修饰符


- 转换说明的意义
转换说明把以二进制格式储存在计算机中的值转换成一系列字符(字符串)以便于显示。
实际上,转换说明是翻译说明,%d的意思是“把给定的值翻译成十进制整数文本并打印出来”。
scanf()转换说明



scanf()如何读取输入
-
假设scanf()根据一个%d转换说明读取一个整数。
scanf()函数每次读取一个字符,跳过所有的空白字符,直至遇到第1个非空白字符才开始读取。 scanf()不断地读取和保存字符,直至遇到非数字字符。 如果遇到一个非数字字符,它便认为读到了整数的末尾。然后,scanf()把非数字字符放回输入。 最后,scanf()计算已读取数字相应的数值,并将计算后的值放入指定的变量中。 -
格式字符串中的普通字符
scanf("%d,%d", &n, &m);
scanf()函数将其解释成:用户将输入一个数字、一个逗号,然后再输入一个数字。也就是说,用户必须像下面这样进行输入两个整数:88,121
- 注意
对于scanf(),一定要记得在变量名前加上地址运算符(&)。
本文介绍了C语言中的字符串处理,包括双引号与单引号的区别、字符串长度计算(strlen())与占用内存(sizeof)的关系,以及常量的两种形式:预处理器宏定义和const限定符。此外,还探讨了printf()和scanf()函数的转换说明和使用注意事项,强调了在使用scanf()时必须提供变量的地址。

被折叠的 条评论
为什么被折叠?



