zoukankan      html  css  js  c++  java
  • 关于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能实现吗?如何实现啊?多谢各位啦
     
    1,我想要的是那个位置的数据,之前不知道具体是多少
    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
    ",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
    ",num3,num4);
       printf("
    ");
      }
      strcpy(line2,line1);
     }
    }
    
     

  • 相关阅读:
    js 获取服务端时间,并实现时钟
    微信分享问题记录
    format
    vue-cli3 使用mint-ui
    vue.js 使用记录(1)
    iview admin 生成环境打包时路径问题
    java8:(Lambda 表达式简介)
    SpringBoot: 18.使用Scheduled 定时任务器(转)
    SpringBoot: 16.整合junit单元测试(转)
    SpringBoot: 17.热部署配置(转)
  • 原文地址:https://www.cnblogs.com/China3S/p/3292507.html
Copyright © 2011-2022 走看看