有人可以告诉我哪里出错了以下代码?netmask转换,有什么错?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main() {
char str[35]={0};
char b[15]="255.255.255.255";
nmcalc(b,str);
return 0;
}
void nmcalc(char str[],char b[35]) {
char *delim = ".";
char *pch;
char a[8]={0};
int num;
int i =0;
pch = strtok(str,delim);
while (pch != NULL){
i++;
num=atoi(pch);
decToBinStr8bit(num,a);
strcat(b,a);
if(i!=3){
strcat(b,".");
}
pch = strtok(NULL, delim);
}
}
void decToBinStr8bit(int n,char str[]){
int c, k;
strcpy(str,"");
for (c = 7; c >= 0; c--) {
k = n >> c;
if (k & 1)
strcat(str,"1");
else
strcat(str,"0");
}
}
这似乎是一个无限循环。
请注意,您应该在'main'函数之前定义'nmcalc'和'decToBinStr8bit' – Valeriy