菜鸟请教:c语言中怎么统计一个文件中的数据个数

数据形式:
tpyedef struct goods
{
char node[20];
char name[20];
char num[20];
char price[20];
}ITEM;
文件中存放形式如下:
01 apple 2
02 shoes 100
03 banana 1
如果这样的话数据就是三个,但怎么编一个函数把这个个数(三个)统计出来
希望能把完整的代码写出来,或者指出我编的代码的错误
int tongji()
{
int i;
ITEM m[100];
FILE * fp;
if((fp=fopen("sp.txt","rt"))==NULL) //这个sp.txt是文件的名字
{
printf("\n error on open it!\n");
exit(1);
}
fscanf(fp,"%s %s %s %s\n",m[0].code,m[0].name,m[0].num,m[0].price);
for(i=1;m[i-1].code!="";i++)
{
fscanf(fp,"%s %s %s %s\n",m[i].code,m[i].name,m[i].num,m[i].price);
}
return(i-1);
}
//这个函数由主函数调用,文件里有三个数据,但结果却是193个,怎么也检查不出来错误在哪,求救,有点急,谢谢
如果回答出来了,分数可以追加的
//下面是正团悉腊确的程序,请加分;
//运行时将sp.txt文件复制到C:\
#include <stdio.h>
#include<stdlib.h>
typedef struct goods
{
char node[20];
char name[20];
char num[20];
char price[20];
}ITEM;
int tongji()
{
int i;
ITEM m[100];
FILE * fp;
if((fp=fopen("c:\\sp.txt","rt"))==NULL) //这个sp.txt是文陆答件的名塌滑字
{
printf("\n error on open it!\n");
exit(1);
}
fscanf(fp,"%s %s %s",m[0].node,m[0].name,m[0].num);
for(i=1;!feof(fp);i++)
{
fscanf(fp,"%s %s %s",m[i].node,m[i].name,m[i].num);
}
return(i);
}

int main(int argc, char* argv[])
{
printf("number=%d\n",tongji());
}