C中文件I / O的问题

时间:2010-12-07 14:29:50

标签: c file-io printf

我很抱歉我的英语不好,但我会尝试解释我的问题。 使用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;
}

2 个答案:

答案 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)