第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种方式
4.4.5使用scanf()
scanf()
格式和printf()类似,用来输入
例子:scanf("%d%d",&a,&b);
scanf()返回值是成功读取的项数,而读入失败时,返回0,对文件读写来说,读到文件末尾返回EOF
转换说明:
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);//!*指定宽度和精度