zoukankan      html  css  js  c++  java
  • 隔行如隔山!%c与%s,只有程序员才懂的C语言符号!

    原文链接:https://blog.csdn.net/zhgl7688

    这篇文章主要介绍了C语言中%c与%s的区别与划分详解,希望对大家有所帮助。一起跟随小编过来看看吧!


     

    %c格式对应的是单个字符,%s格式对应的是字符串。

    例:

    char a;

    char b[20];

    scanf("%c",&a); //只能输入一个字符。

    scanf("%s",b); //可以输入一串不超过20字符的字符串。

    %c对应类型为char, %s对应类型为char * , 即字符串.

    用作输入时, 二者参数都要传char * 型.

    %c输入函数只会对一个字节空间赋值. 而%s会一直赋值,直到输入中遇到空白字符为止.

    用作输出时, %c传char类型,输出一个字符. %s传char*类型参数, 输出到为止.

    %c只能输出或输入一个字符,%s输出的是一串字符还有就是char a; string s;

    输入的时候scanf("%c", &a);这里的&不能少

    而scanf("%s",s);这里不能有&符号

    转换说明符

    %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)

      %c      字符

      %d      有符号十进制整数

      %f      浮点数(包括float和doulbe)

      %e(%E)    浮点数指数输出[e-(E-)记数法]

      %g(%G)    浮点数不显无意义的零"0"

      %i      有符号十进制整数(与%d相同)

      %u      无符号十进制整数

      %o      八进制整数  e.g.  0123

      %x(%X)    十六进制整数0f(0F)  e.g.  0x1234

      %p      指针

      %s      字符串

      %%      "%"

    补充知识:c语言中scanf("%c",&c)吃掉回车或者空格字符的问题

    2`标志

    左对齐:"-" e.g. "%-20s"

    右对齐:"+" e.g. "%+20s"

    3.格式字符串(格式)

    〔标志〕〔输出最少宽度〕〔.精度〕〔长度〕类型

    "%-md" : 左对齐,若m比实际少时,按实际输出。

    "%m.ns" : 输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n

    "%m.nf" : 输出浮点数,m为宽度,n为小数点右边数位

    "%3.1f" :  输入3852.99 输出3853.0

    补充知识:c语言中scanf("%c",&c)吃掉回车或者空格字符的问题

    我就废话不多说了,大家还是直接看代码吧~

    #include<stdio.h>

    void main(){

    int a;

    char b;

    printf("input a integer ");

    scanf("%d",&a);

    //这里需要吸收 回车符 下面有种方法,第二种我没看懂 谁能改下代码 告诉我第二种怎么用

    printf("input a char ");

    scanf("%c",&b);

    printf("%d,%c ",a,b);

    }

    /*

    (1)用getchar()清除

    (2)用"%1s"来限制

    (3)用格式串中空格或"%*c"来"吃掉"

    (4)用函数fflush(stdin)清除全部剩余内容

    */

    下面使用第二种方法

    #include<stdio.h>

    int main(){

    int a;

    char b;

    printf("input a integer ");

    scanf("%d",&a);

    //这里需要吸收 回车符 下面有种方法,第二种我没看懂 谁能改下代码 告诉我第二种怎么用

    printf("input a char ");

    scanf("%1s",&b);

    printf("%d %c ",a,b);

    system("pause");

    return 0;

    }

    环境(dev c++)

    测试结果


     

    可以看出a的值异常了,为什么呢?

    这应该和编译器有关系,因为%1s的输入方式的问题。

    解决方法有两种:

    第一:

    char b;

    int a;

    将这两个变量的声明换一下,哈哈,以前老师说过。但我感觉着不是解决方法,如果还有其他的变量,这种方式是不是还会危害其他呢。

    第二:

    #include<stdio.h>

    int main(){

    int a;

    char b[2];

    printf("input a integer ");

    scanf("%d",&a);

    //这里需要吸收 回车符 下面有种方法,第二种我没看懂 谁能改下代码 告诉我第二种怎么用

    printf("input a char ");

    scanf("%1s",&b);

    printf("%d %c ",a,b[0]);

    system("pause");

    return 0;

    }

    b声明成字符创的形式,哈哈,这个好。。。。

    结果为:


     

    以上这篇C语言中%c与%s的区别与划分详解就是小编分享给大家的全部内容了,有什么问题欢迎评论区留言。


     

    最后,如果你也想成为程序员,想要快速掌握编程,赶紧加入学习企鹅圈子

    里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”

    编程学习书籍:


     

    编程学习视频:


     
  • 相关阅读:
    金山词霸注册表怎么删
    新手学习jquery
    《企业应用架构模式》(POEAA)读书笔记
    Silverlight 4 tools
    asp.net非常基础的面试题
    VS 2010 中文版正式版无法安装Silverlight4 Tools的解决办法
    OnPreRender(EventArgs e) 事件常用的方法
    各大搜索引擎网站登录入口
    向用户控件传递参数的问题
    URLRewriter
  • 原文地址:https://www.cnblogs.com/mu-ge/p/14155365.html
Copyright © 2011-2022 走看看