我很抱歉我的英语不好,但我会尝试解释我的问题。 使用C,我想输出一个IP地址列表。
但是,当我打开.txt文件时,它看起来是空白的。我也尝试在stderr上打印,但我根本没有输出。有什么问题?似乎for
循环没有被执行。
这是代码。 (将打印地址从192.168.51.1打印到192.168.51.254)
#include <stdio.h>
#define B1_S 192
#define B1_E 192
#define B2_S 168
#define B2_E 168
#define B3_S 51
#define B3_E 51
#define B4_S 1
#define B4_E 254
#define FNAME "ip.txt"
#define MIN_RANGE 0
#define MAX_RANGE 255
void to_next(int *x);
main()
{
FILE *fp;
int i, j, k, l;
if(fp = fopen(FNAME, "w"))
{
for(i=B1_S; i<=B1_E; to_next(&i))
for(j=B2_S; j<=B2_E; to_next(&j))
for(k=B3_S; j<=B3_E; to_next(&k))
for(l=B4_S; l<=B4_E; to_next(&l))
fprintf(fp, "%d.%d.%d.%d\n", i,j,k,l);
fclose(fp);
}
else
printf("Error opening file.\n");
}
void to_next(int *x)
{
if(*x < MAX_RANGE)
*x+=1;
else
*x = MIN_RANGE;
}
答案 0 :(得分:6)
错字?
for(k=B3_S; j<=B3_E; to_next(&k))
您有一个j
k
。
答案 1 :(得分:0)
由于你的to_next()函数的编写方式,如果任何结束变量设置为255,你的for循环将永远不会终止。
但是,因为结束值总是设置为较小的值,所以不需要to_next函数。我建议改为更正常:
for(i=B1_S; i<=B1_E; ++i)