字符串和格式化输入输出

字符串简介

char数组类型和空字符

char数组末尾为空字符\0表示字符串(不是数字0,是非打印字符,ASC码为0)

使用字符串

scanf("%s",str)读取字符串时,会在遇到第一个空白字符、制表符或者换行符处停止读取

strlen()函数

strlen以字符为单位给出字符串的长度,而sizeof则会将空字符也计算在内

注:sizeof接括号表示获取某个类型的大小,不接括号表示获取某个具体量的大小,括号对于类型是必需的,对于具体量是可选的

常量和C预处理器

定义常量的好处:

  1. 常量名可以给出的信息,让代码可读性更高
  2. 可以方便修改

define语句的注意点:

  1. 不要加分号,因为这是一种替代机制,不是C的语句
  2. 常量名要大写,或是加上c_或k_表示常量
  3. 千万不要加赋值号,注意是替代机制

用const关键字可以把一个变量声明转换成常量声明,使其成为一个只读值

printf和scanf

printf

printf语句的转换说明符如果在其他地方出现不匹配错误,即使正确的说明符也会产生虚假的结果

float类型在printf中会自动转换成double

printf的返回值:如果正确输出,则返回打印字符的数目(包括所有的空白字符和不可见的换行字符),如果有输出错误,则返回一个负数

printf如何打印一段较长的字符串:

  1. 使用多个printf语句

  2. 使用反斜线\和回车键的组合结束一行

    printf("here is one way \
    to print a long string.");
    
  3. 使用字符串连接的方法,两对引号之间的空白字符将被忽略

    printf("here is another way"
           "to print a long string.");
    

scanf

区别于printf,float和double 类型的转换说明符不同,float用%f,double用%lf

scanf输入的过程(以说明符%d为例):

  1. 每次读取一个输入字符,跳过空白字符,直到遇到一个非空白字符

  2. 如果遇到的是数字或是符号,则保留,并读取下一个字符

    如果遇到的是非数字字符,则得出结论:已读整数的结尾,并将非数字字符放回输入

  3. 计算读到的数字的对应数值,并将该值放到指定的变量中

格式字符中的常规字符

  1. 格式字符串中的普通字符一定要与输入字符串准确匹配,不过可以跳过整数前的空白字符

    scanf("%d,%d",&n,&m);
    /*输入可以是:
    8,4
    8,  4
    */
    
  2. 格式字符中的空格意味着跳过下一个输入项之前的任何空白字符

    scanf("%d ,%d",&n,&m);
    /*输入可以是:
    8,4
    8   ,4
    8   ,   4
    */
    

scanf的返回值是成功读入的项目个数,如果没有读取任何项目,则返回0

posted @ 2020-03-27 13:34  咸鱼不闲咋整啊  阅读(205)  评论(0编辑  收藏  举报