c - 网络掩码转换,有什么问题?

标签 c arrays loops strtok

谁能告诉我以下代码哪里出错了?

#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/

相关文章:

php - 将数组值插入mysql数据库

java - 如何在保留初始索引的同时对这些值进行排序?

c++ - 在 C++ 中用 for(;condition;) 替换 while(condition) 有什么理由吗?

c - 在 C 中交换 - 打印

c - 读取 300MB 二进制文件到 char 数组

Php递归数组计数

php - 返回基于二维数组内容的 mysql 查询

线性回归上的 R 循环

c - 错误 : storage size of 'c' isn't known

c - 如何在不使用数组的情况下找到丢失的数字?