c primer plus第4章总结:字符串和格式化输入输出

1、计算字符串长度:
sizeof() 以字节为单位给出数据大小,数组定义的长度,包含空格和 \0;
strlen() 以字符为单位返回字符串长度,实际字符占用空间,不含 \0;

2、创建符号常量:
预处理:#define NAME value
     一般大写符号名代表常量,c_,或 k_ 表示常量;
const常量申明: const int name = value;

3、limits.h 和 float.h 整数、浮点数的大小限制信息:
limits.h中常用符号常量
CHAR_BIT 一个 char 的位数
CHAR_MAX / CHAR_MIN char 类型的最大值 / 最小值
SHRT_MAX / SHRT_MIN short 类型的最大值 / 最小值
INT_MAX / INT _MIN int 类型的最大值 / 最小值
LONG_MAX / LONG _MIN long 类型的最大值 / 最小值
LLONG_MAX / LLONG _MIN long long 类型的最大值 / 最小值
limits.h中常用符号常量
FLT_MANT_DIG float 类型的尾数位数
FLT_DIG float 类型的最少有效数字位数(十进制)
FLT_MAX float 类型正数的最大值
FLT_MIN 保留全部精度的 float 类型正数的最小值
FLT_EPSILON 1.00和比1.00大的最小的 float 类型值之间的差值

3、printf():
printf() 的返回值:返回打印的字符的数目,包含所有的打印字符(空格、换行符等);如果输出错误,会返回负数;
printf() 换行:
// 反斜杠(/)和换行组合结束第一行,下一行必须从最左端开始;    
printf("Here's another way to print a \
long string.\n");          
// 字符串连接;
     printf("Here's the newest way to print a "
            "long string.\n");             

4、scanf():
scanf()的返回值:返回成功读入的参数个数,读取失败返回0,检测到文件结尾,会返回EOF(-1);
除%c以外,scanf() 会自动跳过输入的空格,%c 前添加空格,可跳过空白字符;
scanf(“%c”, &ch) ;读取输入中遇到第一个字符;
scanf(“ %c”, &ch) ;读取输入中遇到第一个非空白字符;(有空格)
字符串数组的结束用 \0 空字符标记;
%c 字符,空格、制表符,换行符scanf() 也能读取; 
%s 字符串,对于字符串,scanf()会在遇到第一个空格、制表符,换行符时,会停止读取;字符数组读进scanf()时,不需要& ;

5、printf()和 scanf()的*修饰符:
printf("%*d", n); 可变宽度输出字段;
scanf('%*d %d",  &n); 滞后赋值,跳过输入的参数;

补: 格式转换说明符printf() / scanf():    http://blog.sina.com.cn/s/blog_8d05143b01011sjf.html

第四章课后习题

1、字符串打印格式:
scanf("%s", name2);
printf("my name is\" %s\"\n", name2); // 双引号内打印
printf("my name is\" %20s\"\n", name2); // 宽度为20,右端打印
printf("my name is\" %-20s\"\n", name2); // 宽度为20,左端打印
num = strlen(name2)+3;
printf("my name is\" %*s\"\n", num, name2); // 比name2宽3个字符打印

2、上下行对齐:
num1 = strlen(ll_name);
num2 = strlen(ff_name);
printf("%s %s\n", ll_name, ff_name);
printf("%*d %*d\n", num1, num1, num2, num2); //右端对齐
printf("%s %s\n%-*d %-*d\n", ll_name, ff_name, num1, num1, num2, num2); //左端对齐
注:左端对齐用“-”,未知长度用“*”,注意赋值参数顺序,%s、* %d 按顺序依次赋值;

3、用FLT_DIG、DBL_DIG 查询有效位数:
double d = 1.0/3.0;
float fl = 1.0/3.0f;
printf("%d %d\n", FLT_DIG, DBL_DIG);//最少有效数字位数(十进制)


你可能感兴趣的:(C/C++,字符串打印,输出对齐,float,double有效位)