特别说明:这里malloc没有用free回收是因为这边的环境是Xcode,加上free提示已经回收错误,故没有回收内存。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 去除字符串里所有的空格 */
char *DeleteBlank(char *src);
int main ()
{
char *address;
int *add, *pos, i;
if ((address = (char *)malloc(50 * sizeof(char))) == NULL) //防止手残多输入空格
{
printf("malloc fail!\n");
exit(1);
}
memset(address, 0, 50);
if ((add = (int *)malloc(4 * sizeof(int))) == NULL)
{
printf("malloc fail!\n");
exit(2);
}
memset(add, 0, 4);
pos = add;
printf("Please input binary adress 32 bits (sample : 11111111 11111111 11111111 00000000): \n");
scanf("%[^\n]",address);
memcpy(address, DeleteBlank(address), 32);
address = (char *)realloc(address, 32 * sizeof(char));
for (i = 0; i < 32; i ++)
{
*add = (*add) * 2 + (*address++ - '0');
if (i > 1 && (i + 1) % 8 == 0)
add ++;
}
printf("IP : %d.%d.%d.%d\n", *(pos), *(pos+1), *(pos+2), *(pos+3));
return 0;
}
char *DeleteBlank(char *src)
{
char *p = src;
int i,j;
for(i=0;src[i];i++)
{
if(src[i]==' ')
{
for(j = i; src[j]; j++)
src[j] = src[j+1];
i--;
}
}
return p;
}
运行结果: