c语言 关于文件的读入问题!

来源:百度知道 编辑:UC知道 时间:2024/05/09 20:42:47
我希望从文件中读如数据,数量是不确定的.我用下面的方法,每次只能实现:n l m的初值,而其他的全部都是0,不知道为什么.希望大家给我点提示!
程序如下:
in 为文件指针
fscanf(in,"%d,%d,%d",&n,&l,&m);

for(i=1;i<=l;i++)
{fscanf(in,"%d",&s1[i-1]);
}

for(i=1;i<=l;i++)
{fscanf(in,"%f",&e1[i-1]);
}

for(i=1;i<=l;i++)
{fscanf(in,"%f",&g1[i-1]);
}

for(i=1;i<=l;i++)
{fscanf(in,"%f",&b1[i-1]);
}

for(i=1;i<=l;i++)
{fscanf(in,"%f",&c1[i-1]);
}
for(i=1;i<=l;i++)
{c[i-1]=0;
}

for(i=1;i<=l;i++)
{fscanf(in,"%f",&co[i-1]);
}

for(i=1;i<=n-1;i

你的数据是一行的,fscanf一次把一行当输入吧。如果文件里面内容就是只有一行:
1. fgets() 把整行读入到buffer。
2. 以','为分界符,用atoi()把值一个个的读

算法简单示例:

int i = 0;
int j = 0;
fgets(in,buffer, size); // 读一行
do{
j = next_comma(&buffer[i]); //下一个 ','
if (0 == buffer[j]) // 结束
break;
else
buffer[j] = 0; // 字符串结束
val = atoi(buffer[i]); // 读值
i = j+1; //下一个值
}
inline int next_comma(char * buf)
{
int i = 0;
while (0 != buf[i] && ',' != buf[i]) i++;
return i;
}