回 帖 发 新 帖 刷新版面

主题:C语言问题,希望有人 能给解答下

C语言读取 文本内IP 段的问题  先看代码
[code=c]
#include "stdio.h"
#include "stdlib.h"

main()

{
      int n;
      char *startip[200],*endip[200];
      FILE *fp;
      fp=fopen("ip.txt","r");
      for(n=0;!feof(fp);n++)
      {
          fscanf(fp,"%s %s\n",&startip[n],&endip[n]);
          printf("%s %s\n",&startip[n],&endip[n]);                  
          }
      fclose(fp);
      system("pause");


}
[/code]
代码大致就是这样的 定义的指针数组 来循环读取每一行的IP 段
IP 段的排列 如下
192.168.0.1 192.168.0.255
192.168.1.1 192.168.1.255
可是定义指针数组 必须要表明数组长度   晕死 但是用变量n 来声明的话 后面的for 循环中n=0开始的    在VC tc  都是不能编译通过的
 我要的是无限循环读取的   这个 假若  ip.txt中的ip段超过200段的 话 程序 运行就会出错
如何 修改 代码 以达到 无限循环读取呢



PS:这个如果定义char *startip[n]  后面n =0 在devc++ 4.992 能通过 运行也正常 ,也就是可以无限读取,但是 在wxdevc++7.02  下能通过编译 但是运行 有问题 就是 不能读取IP 段

回复列表 (共14个回复)

11 楼

fp = fopen("C:\\ip.txt","r"); 这里自己改回去吧

12 楼


  我有个问题想问一下,你在10楼给出的代码中的“if (((startip =(char *) malloc([color=C0C0C0]20[/color]))==NULL) || ((endip = (char *)malloc([color=FF0000]20[/color])) == NULL)) ”这部分里的动态分配函数malloc中的20并不是固定的吧,10也可以,30也可以,是不是?

13 楼

IP地址超过10位了,10不行。

14 楼

[quote]
  我有个问题想问一下,你在10楼给出的代码中的“if (((startip =(char *) malloc([color=C0C0C0]20[/color]))==NULL) || ((endip = (char *)malloc([color=FF0000]20[/color])) == NULL)) ”这部分里的动态分配函数malloc中的20并不是固定的吧,10也可以,30也可以,是不是?[/quote]
不是固定的 不过IP  地址一般都是超过10的 所以 30

我来回复

您尚未登录,请登录后再回复。点此登录或注册