C语言 把111111110...转换为IP地址 代码出现的问题

wantyouknowme 2013-07-10 08:13:38
做一个题目,把类似11111111111111111111111100000000 这样的一串32位的数字转成IP地址(本例为:255.255.255.0)。

我写了一些代码(还没写完),思路是把这串数字存到 char a[33]数组里面。然后分成四个小的数组存到 a0_7[]、a8_15[]、a16_23[]、a24_31[]里面。然后用atoi函数把每个小数组从字符串转为整数计算输出即可。但是下面赋值到四个小数组的代码,编译没问题在运行是出错了,不知是哪里有问题。(数组也没越界呀,希望前辈指点)
#include<stdio.h>
#include<stdlib.h>

int main()
{
char a[33]={0};
char a0_7[8];
char a8_15[8];
char a16_23[8];
char a24_31[8];
int i;

printf("please input binary number:");
scanf("%s",a);

for(i=0;i<=7;i++)
a0_7[i]=a[i];

for(i=8;i<=15;i++)
a8_15[i]=a[i];

for(i=16;i<=23;i++)
a16_23[i]=a[i];

for(i=24;i<=31;i++)
a24_31[i]=a[i];

return 0;
}

...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghuanlucy 2014-03-10
  • 打赏
  • 举报
回复
scanf("%s",a);中a前缺了&
LubinLew 2013-07-10
  • 打赏
  • 举报
回复
楼上都是正解
mujiok2003 2013-07-10
  • 打赏
  • 举报
回复
引用 1 楼 qzf362269994 的回复:
for(i=8;i<=15;i++) a8_15 [i]=a[i]; for(i=16;i<=23;i++) a16_23[i]=a[i]; for(i=24;i<=31;i++) a24_31[i]=a[i]; 都越界了!a8_15, a16_23 a24_31 数组下标都是0-7啊 你for循环错了

   for(i=0;i<=7;i++)
        a8_15 [i]=a[i+8];
 
    for(i=0;i<=7;i++)
        a16_23[i]=a[i+16];
 
    for(i=0;i<=7;i++)
        a24_31[i]=a[i+24];
++
mujiok2003 2013-07-10
  • 打赏
  • 举报
回复
scanf("%32s",a);
qzf362269994 2013-07-10
  • 打赏
  • 举报
回复
for(i=8;i<=15;i++) a8_15 [i]=a[i]; for(i=16;i<=23;i++) a16_23[i]=a[i]; for(i=24;i<=31;i++) a24_31[i]=a[i]; 都越界了!a8_15, a16_23 a24_31 数组下标都是0-7啊 你for循环错了

   for(i=0;i<=7;i++)
        a8_15 [i]=a[i+8];
 
    for(i=0;i<=7;i++)
        a16_23[i]=a[i+16];
 
    for(i=0;i<=7;i++)
        a24_31[i]=a[i+24];

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧