我有如下數據格式
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能實現嗎?如何實現啊?多謝各位啦
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能實現嗎?如何實現啊?多謝各位啦
1,我想要的是那個位置的數據,之前不知道具體是多少
2,我的想法是先找到
3360 2001 5 1750.5 1246.5 22.5 n Type 1 = 1000 V
這行,然后使指針回到上一行,這樣能找到我想要的行號,(因為每個數據塊的行數不定的)但指針如何回到上一行?
3,我的是多個數據塊,又如何重復找呀?
2,我的想法是先找到
3360 2001 5 1750.5 1246.5 22.5 n Type 1 = 1000 V
這行,然后使指針回到上一行,這樣能找到我想要的行號,(因為每個數據塊的行數不定的)但指針如何回到上一行?
3,我的是多個數據塊,又如何重復找呀?
以上問題可以用以下代碼解決:
#include <stdio.h> #include <string.h> 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)<2) { flag1=0; } if (!flag1 && 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); } }