我是使用 C 的 2 个月大的 child 。我有一个简单的问题,将 ip-range 作为参数传递给 main 函数并获得一个包含独立 ips 的数组。
例如。 func-ip-range 应将 1.1.1.1-10 作为 argv 并返回一个数组 [1.1.1.1, 1.1.1.2, 1.1.1.3 ......... 1.1.1.10]。
我解决这个问题的方法如下,我无法调试“段错误”,因为我不知道代码在哪里阻塞。
如果能帮助拯救这个 child ,我们将不胜感激。
方法是将命令行参数传递给*ip_str 并逐字符读取此字符串。一旦我遇到第一个'。'我增加计数 'c',当计数 c == 3 时,我想将字符串从那里存储到一个新的字符串变量,直到我到达 '-' 并在到达 '-' 之后将字符串的其余部分存储到一个新字符串。但是我对程序编写和调试的接触有严重的问题。
除此之外如何解决问题的方向对我的学习非常有帮助。
void array_ip(char *ip_str,char **iplist)
{
for(i=0,j=0;*(ip_str+i) != '\0';i++)
{
if(*(ip_str+i)=='.')
{c++;
}
if(c==3 && (*(ip_str+i )!= '-'))
{
*(a+j) = *(ip_str+i);
j++;
}
if(*(ip_str+i) == '-')
{
break;
}
}
for(k=0;*(ip_str+i) != '\0';k++,i++)
{
*(b+k)=*(ip_str+i);
}
printf("the starting last octet is %s \n",a);
printf("the Ending last octet is %s \n",b);
}
最佳答案
您可以改用的另一个函数是 strtok使用“-”作为分隔符。一旦你有了两个字符串,你就会知道你必须提供 ips 输出的限制。
关于c - 以 ip-range 字符串作为参数并返回包含 'C' 中的 ips 列表的数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601457/