关于C语言读取多行数据的问题

我有如下数据格式
3360 2001 5 1750.5 1246.5 22.5 n 1775=1177-1316:1
3360 2001 5 1750.5 1246.5 22.5 n 1778=1177-1316:1
3360 2001 5 1750.5 1246.5 22.5 n 1781=1177-1316:1
3360 2001 5 1750.5 1246.5 22.5 n 1784=1177-1316:1
3360 2001 5 1750.5 1246.5 22.5 n Type 1 = 1000 V
中间这是空的一行
3360 2002 5 1749.5 1246.5 20.5 n 1775=1177-1316:1
3360 2002 5 1749.5 1246.5 20.5 n 1778=1177-1316:1
3360 2002 5 1749.5 1246.5 20.5 n 1781=1177-1316:1
3360 2002 5 1749.5 1246.5 20.5 n 1784=1177-1316:1
3360 2002 5 1749.5 1246.5 20.5 n Type 1 = 1000 V
中间是空行
3360 2003 5 1748.5 1246.5 19 n 1775=1177-1316:1
3360 2003 5 1748.5 1246.5 19 n 1778=1177-1316:1
3360 2003 5 1748.5 1246.5 19 n 1781=1177-1316:1
3360 2003 5 1748.5 1246.5 19 n 1784=1177-1316:1
3360 2003 5 1748.5 1246.5 19 n Type 1 = 1000 V



很多这样的数据块

请问,我如何能将每个数据块中的第一行中的如:1775=1177-1316:1中的1775
和1177读出来,
每个数据块中的倒数第二行中的如:
3360 2001 5 1750.5 1246.5 22.5 n 1784=1177-1316:1
3360 2001 5 1750.5 1246.5 22.5 n Type 1 = 1000 V
1784 1316读取出来啊?
用fscanf能实现吗?如何实现啊?多谢各位啦

我能帮你实现 但是不是用的fscanf

而且很简单 折腾字符串和 文件读写的问题我比较擅长追问

只要有办法,用什么函数都可以,我用fscanf是因为取出对应数据要计算用的,希望您给说说,呀是您呀,您可是我的启蒙老师啊

追答

sscanf把按行去的数据根据行号解析为你所要的数据

追问

1,我想要的是那个位置的数据,之前不知道具体是多少
2,我的想法是先找到
3360 2001 5 1750.5 1246.5 22.5 n Type 1 = 1000 V

这行,然后使指针回到上一行,这样能找到我想要的行号,(因为每个数据块的行数不定的)但指针如何回到上一行?
3,我的是多个数据块,又如何重复找呀?

高人啊,您可是我的救星啊!希望经常向您讨教啊!!!

追答

等我吃完饭 加Q详谈

你Q多少? 我吃完饭了

追问

285119658 不好意思,刚才出去了一下

追答

我已经写完了 数值我稍微改了一下 这些读出来 就能看清楚了 否则都一样不易分辨

num1 = 1775 num2= 1177
num3 = 1784 num4= 1316

num1 = 1776 num2= 1178
num3 = 1785 num4= 1317

num1 = 1777 num2= 1179
num3 = 1786 num4= 1318

Press any key to continue

#include
#include
void main()
{
int num1,num2,num3,num4,flag1=0;
char line1[256]={0},line2[256]={0};
FILE *fp=fopen("data.txt","r");
while (fgets(line1,sizeof(line1),fp))
{
if (strlen(line1)1)
{
sscanf(line1,"%*d %*d %*d %*f %*f %*f %*c %d=%d-%*d:%*d",&num1,&num2);
printf("num1 = %d num2= %d\n",num1,num2);
flag1=1;
}
if (strstr(line1,"Type 1 = 1000 V")!=NULL)
{
sscanf(line2,"%*d %*d %*d %*f %*f %*f %*c %d=%*d-%d:%*d",&num3,&num4);
printf("num3 = %d num4= %d\n",num3,num4);
printf("\n");
}
strcpy(line2,line1);
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-19
提示 fgets 整行读
然后分析字符串
先找到 =
然后 向两边 找 非数字字符
相似回答