zoukankan      html  css  js  c++  java
  • IP字符串转整数[面试]

      去某互联网公司运维部面试,看似非常简单的一道题,我虽然五分钟内写了出来,但错误很多,还好面官只指出了一两个。更不要说运行了!最近准备求职,昨晚变拿来上机实践,结果两个多小时没挑通。晚上睡觉十二点多,还起来改了改,但仍然不完全正确,今日早饭后,又调试一小时,终于成功!拿来分享!

    首先,总结经验:1、动笔前一定要深思熟虑,这比边写边改实际要节约时间!

            2、如果基本确认是语法错误,可以慢慢调,如果自己逻辑都不清楚,干脆重来!要有重构的勇气!

     1 #include<stdio.h>
     2 //程序功能,将“192.168.1.29”之类的IP转化为(相当与去掉小数点后的)整数
     3 int main(){
     4 
     5 char ip[]="0.3.2.1.";//如果你的机器sizeof(int)是2字节,还要考虑溢出问题!
     6 
     7 int sum=0,i=0,j=0,n=0;//erroor1:i不初始化,以后一但下标越界就是段错误!
     8 int cnt=4;
     9 char tmp[4];
    10 
    11     while(cnt>0){
    12         int tmpsum=0;//不要只记得开始的sum初始化,任何边写边新曾的变量都要初始化,否则结果不对!
    13 
    14         if(ip[j]!='.'){
    15             tmp[i]=ip[j]; 
    16             //printf("%c\n",ip[j]);
    17             i++;j++;
    18         }else{
    19             i=0;j++;            
    20             tmpsum=atoi(tmp);
    21             //printf("*%d\n",tmpsum);
    22             if (cnt!=1){
    23                 for(n=cnt-1;n>=1;n--)
    24                 tmpsum*=256;
    25                 printf("**%d\n",tmpsum);
    26             }
    27             cnt--;            
    28         }
    29 
    30         sum+=tmpsum;
    31         //printf("***%d\n",tmpsum);//
    32     }
    33     printf("%d\n",sum);
    34     return 0;
    35 }

      今天还学到了gdb调试程序的知识,以前懒得做非IDE下的调试,今天看到陈皓的《用GDB调试程序》系列文章,向大家推荐!

  • 相关阅读:
    i'm all geared up
    android设置主题和自定义主题的方法
    &和&&的区别
    兼容IE与Firefox的js 复制代码
    实用的注册表单验证代码
    常用JavaScript属性和方法
    400多个JavaScript特效大全
    float引起层飘出父层的解决方法
    JavaScript常见兼容性处理
    多种方法实现checkbox全选、取消全选、删除功能
  • 原文地址:https://www.cnblogs.com/zhaoyl/p/2682902.html
Copyright © 2011-2022 走看看