|
请大家帮忙看看这段程序哪里有问题,为什么输出不正确呢??
我希望实现从文件/root/c_cfg_a.txt中读取数值,该文件的格式为每一行为*|*|*|*| 我要读取*值,|为分隔符.如 0|0.8|1|80| 我希望将0读出放入一字符串TIME里,0.8放入NJ里,1放入ZS里,80放入WD里.可我编译执行此程序后,得出的输出结果为,
time=0@0|1|0.7|80|
NJ=1?1?
不是我所想要的.我百思不得其解.还望各位大侠,帮小弟看看,到底是哪里错了.帮我早日了确这块心病啊!!!谢谢 ,谢谢 !!!
[code:1]
#include"sys/types.h"
#include"sys/stat.h"
#include"fcntl.h"
#include"stdio.h"
main()
{
FILE *file;
int i,k,l,m;
int n=0;
char data[20];
char time[2];
char NJ[5];
char ZS[5];
char WD[5];
char bz=124;
file = fopen("/root/c_cfg_a.txt","r");
if (file == NULL)
{
printf("please check the config file!!\n");
exit();
}
if (fgets(data,20,file)==NULL)
{
printf("read erro\n");
exit();
}
fputs(data,stdout);
for (i=0;i<20;i++)
{
if ((data[i]-bz)==0)
{
n=n+1;
m=i;
switch (n)
{
case 1: for(k=0;k<m;k++)
{
time[k]=data[k];
}
l=m;
break;
case 2: for(k=l+1;k<m;k++)
{
NJ[k-(l+1)]=data[k];
}
l=m;
break;
case 3: for(k=l+1;k<m;k++)
{
ZS[k-(l+1)]=data[k];
}
l=m;
break;
case 4: for(k=l+1;k<m;k++)
{
WD[k-(l+1)]=data[k];
}
l=m;
break;
}
}
if (n==4) break;
}
printf("time=%s\n",time);
printf("NJ=%s\n",NJ);
printf("ZS=%S\n",ZS);
printf("WD=%S\n",WD);
}[/code:1] |
|