美文网首页
printf/scanf

printf/scanf

作者: labi3285 | 来源:发表于2017-09-14 21:39 被阅读31次

    printf和scanf函数为重要的文字交互函数,printf用于输出字符串,scanf用于扫描用户输入,是终端界面最常用的两个函数。
    这两个函数都包含在stdio.h标准输入输出头文件中,在使用中需要包含。
    在学习这两个函数前,我们先要了解一下字符串。

    1、字符串的认识

    在c语言中没有字符串的概念,我们所接触到的基本数据类型中只有int、char、Bool、float、double等类型,而字符串是由一系列的字符所组成,为了表示字符串,需要用到字符数组,在一个字符数组中,前面的元素为char类型(各占8个bit),最后一位存储一个结束标志\0,这样以来,程序就可以通过这个字符数组的首地址(数组名标识符)和结束标志(\0)从内存中读取该字符串。

    2、占位符的认识

    占位符是一种特殊的运算,用于将一些其他数据类型的数据转换为特殊的字符格式,嵌入到某个字符串中。有如下几种:

    占位符 作用
    %a,%A 读入一个浮点值(仅C99有效)
    %c 读入一个字符
    %d 读入十进制整数
    %i 读入十进制,八进制,十六进制整数
    %o 读入八进制整数
    %x,%X 读入十六进制整数
    %s 读入一个字符串,遇空格、制表符或换行符结束。
    %f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。
    %p 读入一个指针
    %u 读入一个无符号十进制整数
    %n 至此已读入值的等价字符数
    %[] 扫描字符集合
    %% 读%符号

    3、printf函数

    该函数接受一个字符串作为参数,其作用是将传入的字符串打印在终端窗口上。
    字符串可以包含占位符。
    举例如下:

    #include <stdio.h>  
      
    //程序入口(主函数)  
    int main()  
    {  
        int count=100;  
        char grade='B';  
        float height=1.78f;  
        double pi=3.141592654;  
          
        //输出整数,%d也可  
        printf("数量为 %i \n",count);  
          
        //输出字符  
        printf("等级为 %c \n",grade);  
          
        //输出两位小数,默认6位  
        printf("身高为 %.2f 米\n",height);  
          
        //输出多位小数,.10表示总共10位数  
        printf("圆周率 %.10g \n",pi);  
          
        return 0;  
    } 
    

    在该例子中,定义了int、char、float、double等数据类型,他们可以通过占位符嵌入到字符串中,字符串中的\n为制表位,用于换行输出。
    输出结果如下:

    数量为 100   
    等级为 B   
    身高为 1.78 米  
    圆周率 3.141592654 
    

    4、scanf函数

    scanf函数用于获取用户输入数据,并存储到内存变量中。该函数需要接受两种参数,一种是占位字串,用于表示输入数据格式,一种是内存单元的地址,用于存储输入的数据。
    为此我们需要定义相应的变量用于储存用户输入

    int a;  
    int b; 
    

    然后调用函数scanf,并设置合适的输入格式:

    scanf("%d;%d",&a,&b);  
    

    该代码中两个占位符之间用“;”隔开,表示接收的数据之间要用“;”隔开,缺省的话,可以用空格表示,后面的参数前面加&表示变量地址。
    通过以上步骤即可将用户输入的数据保存到内存单元中。

    5、其他

    1、scanf要求用户输入数据,不会有任何提示,为了交互性的考虑,需要用printf函数进行必要的提示;
    2、用户输入的数据不一定复合格式,要设置必要的检查环节,确保用户输入正确的数据;
    3、printf多用于程序的调试,要合理运用。

    相关文章

      网友评论

          本文标题:printf/scanf

          本文链接:https://www.haomeiwen.com/subject/bprjsxtx.html