对scanf函数的认识

           学了一段时间的C语言,虽然能够编写一点点小程序,但是回头再次看书的途中,突然觉得又收获了不少知识,尤其是对格式化输入/输出函数的理解和应用方面.我想把我对输出函数scanf的运用总结一下,希望能对自己或他人(尤其是初学者)有帮助.

        scanf函数称为格式化输出函数,即按照用户指定的格式从键盘上把数据输入到指定的变量之中.它是一个标准库函数,他的函数原型在头文件"stdio.h"中.scanf函数的一般形式为:

        scanf("格式控制字符串",地址列表); 比方说:

      #include <stdio.h>
     int main(void)
      {
         float  a;

         printf("请输入变量a的值: \n");
         scanf("%f",&a);

        printf("a=%2.3f\n",a);   

       }

       虽然他的用法看起来很简单,但是,我刚开始的时候总是与printf函数搞混淆(因为两者的调用形式很像),其实这两个函数有很大的区别,因此在使用scanf函数的时候有很多讲究,一不小心就会出现小错误.

       首先,scanf函数不能显示非格式字符串,也就是说不能显示提示字符串,.如上面的语句中printf函数就可以有中文提示信息,而scanf函数中就不能有中文出现;

       其次,scanf函数中没有精度控制,也不能有换行转义字符"\n",这和printf不一样.如上面的语句中,如scanf语句中写成scanf("%2.3f",&a)和scanf("%f\n",&a)都是非法的;

       再次,scanf函数中要求给出变量的地址,如给的是变量名就会出错哦,即scanf("%f",a)是非法的;

       再次,这一点是最容易搞错的,在输入字符数据时,若格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符.如:

int main(void)
{
 char  i,k,j;
 scanf("%c%c%c",&i,&j,&k);

 printf("i=%c,   j=%c,   k=%c",i,j,k);

}

        输入和显示结果为:如输入字符a b c,则把'a'赋给变量i,''赋给变量j,'b'赋给变量k.只有当输入为abc时,才能是这样的输出结果:i=a,   j=b,   k=c.

        当然如果格式控制串中有非格式字符,则输入时也要输入该非格式字符,如:

#include <stdio.h>
int main(void)
{
 char  i,k,j;
 scanf("%c,%c,%c",&i,&j,&k);
 printf("i=%c, j=%c, k=%c",i,j,k);
}

         输入时应该是:a,b,c.显示结果为:i=a, j=b, k=c.

最后,在scanf函数中,如果有"*"符,用以表示该输出项,读入后不赋予相应的变量,即跳过该输出值.如:

#include <stdio.h>
int main(void)
{
 int i,k;
 scanf("%d  %*d  %d",&i,&k);
 printf("i=%d,  k=%d",i,k);

}

          当输入三个数字为: 23  12  34时,显示结果应为:i=23,  k=34.

         对于scanf函数的使用格式当然还不止这一点,我呢,只要是把我在平时的编程中遇到的容易混淆的小细节给总结出来,使在今后能够谨慎运用.

 

 

 

 

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值