一段C代码的功能需求,请大神支招!
Tofloor
poster avatar
zwq133
deepin
2018-09-28 03:00
Author
本帖最后由 zwq133 于 2018-9-28 07:35 编辑
  1. #include
  2. #include
  3. #include

  4. void main() {
  5.         char len = 0;
  6.         int  a=0, b=0, c=0;
  7.         char wangduan[16], intranet[16];

  8.         printf("\n输入要测试的网段,不含地址:");
  9.         while (fgets(wangduan, 16, stdin)) {
  10.                 len = strlen(wangduan);
  11.                 if (wangduan[len - 1] == '\n') {
  12.                         wangduan[len - 1] = '\0';
  13.                 }
  14.                 if (sscanf(wangduan, "%d.%d.%d", &a, &b, &c)
  15.                         && a >= 0 && a <= 255 && b >= 0 && b <= 255 && c >= 0 && c <= 255) {
  16.                         sprintf(intranet, "%d.%d.%d", a, b, c);
  17.                         printf("%s", intranet);
  18.                         break;
  19.                 }
  20.                 else {
  21.                         printf("不是正确的网段,请重新输入:");
  22.                 }
  23.         }

  24.         int min=0, max=0;
  25.         printf("\n输入IP地址范围,用空格隔开:");
  26.         while (1) {
  27.                 scanf("%d %d", &min, &max);
  28.                 while (getchar()!='\n');
  29.                 if (min <= 0 || min >= 255 || max <= 0 || max >= 255 || min >= max) {
  30.                         printf("起始数不能大于或等于结束数:");
  31.                 }
  32.                 else {
  33.                         printf("\n———————————————————\n");
  34.                         break;
  35.                 }
  36.         }

  37.         // 顺序查找在线主机(待实现并发查找功能)
  38.         int  addr;
  39.         char hostip[17], chazhao[45];

  40.         for (addr = min; addr<=max; addr++) {
  41.                 sprintf(hostip, "%s.%d", intranet, addr);
  42.                 sprintf(chazhao, "ping -c1 -i0.2 %s > /dev/null", hostip);
  43.                 int test = system(chazhao);

  44.                
  45.                 if (WEXITSTATUS(test) == 0) {
  46.                         // 如果实现并发查找,则排序后输出(待排序)
  47.                         printf("| %-16s|\n", hostip);
  48.                 }
  49.         }
  50.         printf("———————————————————\n");
  51. }
Copy the Code
恩,注释处就是功能需求了,新手表示不能实现,请大神些秀出你们的脑洞,谢谢!!
排版可能混乱,下方附上源码。
Reply Favorite View the author
All Replies
avatar
wtz
deepin
2018-09-28 05:15
#1
主机在线检测:https://blog.csdn.net/m0_37886429/article/details/78795100
排序:等查找结束之后,统一对输出内容进行排序即可(随便用什么排序算法都行)。
Reply View the author