从输入流中读取整形和浮点型数据存储在实参所指的内存空间中

     源自《The C Programming Language》P83 pr5-2:

 

    模仿函数getInt 的实现方法,编写一个读取浮点数的函数getFloat,getFloat函数的返回值应该是什么类型呢?

    代码:

     

    分析:

   

    疑问:关于MAX_FLT定义:当arr_flt定义为float型数组时,if(arr_flt[n] == MAX_FLT)会失效,

             而定义为double型数组时,则有效,如果如上句那样定义MAX_FLT=2147483648则不会出现失效这个问题?

 

    易错:关于continue语句用在while循环和for循环中差异:

             for(n = 0; n < SIZE && ((reNum = getFloat(&arr_flt[n])) != EOF); ++n)

                   if(arr_flt[n] == MAX_FLT)

                       continue;

             for循环中continue语句是直接跳到++n处执行,如果不想跳转到此处而是直接跳到条件测试部分,应该用while循环(如下代码)

              n = 0;
              while(n < SIZE && ((reNum = getFloat(&arr_flt[n])) != EOF))
              {
                  if(arr_flt[n] == MAX_FLT)
                        continue;
                  ++n;
              }

 

     函数分析:getInt:

                    1,  丢弃字符序列头部的空白字符;

                    2,  分四种情况:isdigit(c),c == EOF, c == '+',c == '-'进行处理,

                         当不满足这四种情况时if(!isdigit(c) && c != EOF && c != '+' && c != '-'),说明c是其他字符(不包含空白字符)

                         将c其保存在*pNum中;

                         然后依次按照这四种情况分别进行处理('+', '-'一起处理)。

                    3,  本函数的实参是指向变量的指针,这样可以在函数中改变实参的值,从而达到一个函数返回多个值的目的。

                        

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值