谁能告诉我以下代码哪里出错了?
#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");
}
}
这似乎是一个无限循环。
最佳答案
问题在于以下代码中的空终止符。
char b[15]="255.255.255.255";
大小应为 16
。
还有 char a[8]={0};
大小应该是 9
或者 strcat(a,b)
你可以使用以下内容:
strncat(b, a, 8);
但我建议你使用空终止符。
关于c - 网络掩码转换,有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40805820/