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调试程序》系列文章,向大家推荐!

  • 相关阅读:
    【转载】stm32的GPIO八种工作模式
    常用数字滤波算法总结
    ST-LINK使用注意
    【转载】深入理解嵌入式开发
    【stm32中断优先级--珍藏版】
    对飞控的理解(一)
    【转载】c语言数据的左移右移
    四轴之第一炸
    linux下查看隐藏文件
    Jetson TK1 五:移植工控机程序到板上
  • 原文地址:https://www.cnblogs.com/zhaoyl/p/2682902.html
Copyright © 2011-2022 走看看