字符串和格式化输入/输出

今天,学习了C Primer Plus的第四章。本章讲解了一些简单的C预处理器的知识,一些字符、字符串以及数组等相关概念以及输入输出函数的使用。

现将知识点总结如下:

  • 字符串:一个或多个字符的序列(双引号不是字符串的一部分)
  • 空字符(\0):标记字符串的结束    C中,一定以空字符结束,存储单元比储存的字符多一个
  • 数组:同类型数据元素的有序序列
  • %s转换说明,scanf()只会读取字符串中的一个单词,而不是一整句
  • 比较字符串常量“x”和字符常量‘x’:‘x’是基本类型(char);“x”是派生类型(char数组),实际由两个字符组成:‘x’和\0
  • strlen()函数:给出字符串中的字符长度(不计算空字符)
  • sizeof和strlen()的转换说明:%zd
  • #include <string.h> 提供strlen()函数等多个与字符串相关的函数原型
  • 预处理器定义常量:#define NAME value (用该方式定义的常量称为明示常量;通常用大写字母表示符号常量;在名称前带c_或k_前缀来表示常量)
  • 编译时替换:编译程序时,所有的NAME都被替换为value
  • %n.mf的打印格式:n表示字符宽度,m表示小数点后的位数
  • #define 指令还可定义字符和字符串常量
  • const限定符:限定一个变量为只读
  • 转换说明:指定如何把数据转换(翻译)成可显示的形式(p81)(把以二进制格式储存在计算机中的值转换成一系列字符以便于显示)
  • printf()函数的格式:printf(格式字符串,待打印项1,待打印项2,......);
  • 格式字符串包括实际要打印的字符以及转换说明
  • 在%和转换字符之间插入修饰符可修饰基本的转换说明(printf()的修饰符 p83 scanf()的修饰符 p93)
  • 返回值:函数计算并返回给主调程序的值
  • printf()函数也有 一个返回值,它返回打印字符的个数(包括空格和不可见的换行符\n)
  • 用反斜杠(\)和Enter(或Return)键组合来断行。这使得光标移植下一行,而且字符串中不会包含换行符
  • scanf()中的格式字符串表明字符输入流的目标数据类型
  • scanf()读取基本变量类型的值,在变量名前加一个&;把字符串读入字符数组中,不使用&
  • 当scanf()把字符串放进指定数组中时,它会在字符序列的末尾加上‘\0’,让数组中的内容成为一个C字符串
  • scanf()函数返回成功读取的项数
  • printf()函数中的*修饰符代替字段宽度,scanf()函数中的*修饰符会使scanf()跳过相应的输出项
  • 空白:包括空格、制表符和换行符。C语言使用空白分隔记号。scanf()使用空白分隔连续的输入项

练习:

假设一个程序的开头是这样:
#define BOOK "War and Peace"

int main (void)

{

   float cost =12.99;
   float percent = 80.0;  
请构造一个使用BOOK、cost 和percent的printf()语句,打印以下内容:
This copy of "War and Peace" sells for $12. 99.

That is 80% of list.

代码:

#define _CRT_SECURE_NO_WARNINGS
#define BOOK "War and Peace"
#include <stdio.h>
#include <stdlib.h>

int main(){
	float cost = 12.99;
	float percent = 80.0;

	printf("This copy of \"BOOK\" sells for %.2f\n", cost);
	printf("That is %.0f%% of list", percent);
	system("pause");
	return 0;
}

运行结果:

猜你喜欢

转载自blog.csdn.net/qq_42142477/article/details/82930004