关于scanf的若干运用

Kscanf

/**P1 : when we get numbers, \t \n ... is useless*/


/**P2 : when we get strings*/


    char str1[100] , str2[100] , str3[100] ;

/**第一种接收*/

    scanf( "%s" , str1 ) ;
    scanf( "%s" , str2 ) ;
    scanf( "%s" , str3 ) ;

/**第二种也是一样的*/

    scanf( "%s%s%s" , str1 , str2 , str3 ) ;


    printf( "the str\n1:%s\n2:%s\n3:%s\n", str1 , str2 , str3 ) ;
    /**
    INPUT:
    you will get

or

    fjsdg
    frg     fdjigt

    OUTPUT:

     the str
    1:you
    2:will
    3:get

or

    the str
   1:fjsdg
   2:frg
   3:fdjigt
    */

也就是说,scanf对于空格神马的是真心不敏感...如果你要输入一个有空格的句子,我觉着fgets会比较好,对于一整行的读入,fgets会读入最后一个空格,你要是不要他,记得置为 ‘\0’.


 /**P3 : when get numbers + string*/


    int num1 , num2 , num3 ;
    //scanf("%d%d" , &num1 , &num2 ) ;
    scanf("%d",&num3);
    //getchar();有没有无影响
    scanf( "%s" , str1 ) ;
    printf("num1=%d , num2=%d\n" , num1 , num2) ;
    printf( "the str1 :%s\n" , str1 ) ;    

/**

    INPUT:
    45 6
    45
    get?

    OUTPUT:
    num1=45 , num2=6
    the str1 :get?

    */

/**P4 : when we get numbers and char*/

/**第一种scanf char*/    

    int num1 , num2 , num3 ;
    char ch1 , ch2 , ch3 ;
    scanf( "%d%d" , &num1 , &num2 ) ;

    scanf( "%c%c%c" , &ch1 , &ch2 ,&ch3 ) ;
    printf("num1=%d , num2=%d\n" , num1 , num2 ) ;
    printf( "the ch1 :%c\n" , ch1 ) ;
    printf( "the ch2 :%c\n" , ch2 ) ;
    printf( "the ch3 :%c\n" , ch3 ) ;
    /**
    INPUT:
      45          45
    a b c

    num1=45 , num2=45
    the ch1 :

    the ch2 :a
    the ch3 :
   */

也就是说,对于char型而言,它接收了最后一个%d后面的空格,所以平常涉及到这两个,我们要么在%d后面+%*c   要么直接加个getchar();

/**第二种scanf char*/

    scanf( "%c %c %c" , &ch1 , &ch2 ,&ch3 ) ;

上述可以得到的结果为:

    /**
    INPUT:
      45          45
    a b c

    num1=45 , num2=45
    the ch1 :

    the ch2 :a
    the ch3 :b
   */

SO,scanf的空格和空行会对char的get产生影响...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值