VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1202|回复: 11

求救个读文件问题

[复制链接]

2

主题

10

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-12-11 11:30:01 | 显示全部楼层 |阅读模式
,00599#大*东至西&群艺岗$2016-12-28 08:51:52!,     
61178#大*南至北&惠宾西岗$2015-12-30 08:23:54!,   
09986#大*南至北&惠宾西岗$2016-01-05 09:30:41!,   
63636#大*南至北&惠宾西岗$2016-01-05 17:26:10!,   
13581#大*南至北&惠宾西岗$2016-01-06 16:22:35!,   
06188#大*南至北&惠宾西岗$2016-01-10 08:54:29!,   
61646#大*南至北&惠宾西岗$2016-01-17 13:24:13!,   
50155#大*南至北&惠宾西岗$2016-01-18 14:37:21!,   
09478#大*南至北&惠宾西岗$2016-01-01 08:07:14!,   
95240#大*南至北&财政局岗$2016-01-28 07:06:03!,   
91272#大*南至北&财政局岗$2016-01-30 06:55:25!,   
95268#大*南至北&财政局岗$2016-01-31 10:43:45!,   
29357#大*东至西&群艺岗$2016-01-14 07:26:01!,      
29361#大*东至西&群艺岗$2016-02-01 08:47:38!,      
13610#大*南至北&惠宾西岗$2016-01-19 15:19:02!,   
33533#大*南至北&财政局岗$2016-01-07 09:04:33!,   
50746#大*南至北&财政局岗$2016-01-15 13:45:40!,   
15627#大*南至北&财政局岗$2016-01-09 12:25:59!,   
10414#大*南至北&财政局岗$2016-01-16 15:10:50!,   
10414#大*东至西&礼贤岗$2016-01-10 08:38:32!,      
09769#大*南至北&钻井岗$2016-02-14 11:37:14!,      
66788#大*南至北&惠宾西岗$2016-02-12 08:58:32!,   
09771#大*南至北&交通局岗$2016-01-02 11:57:24!,   
09478#大*南至北&交通局岗$2016-01-08 10:23:55!,   
09478#大*南至北&交通局岗$2016-01-08 15:54:59!,   
08930#大*西至东&银行岗$2016-02-07 11:57:34!,      
09653#大*西至东&银行岗$2016-02-25 21:25:35!,      
16531#大*西至东&作业岗$2016-02-09 13:29:34!,      
12009#大*北至南&科技东岗$2016-02-27 10:57:45!,   
60020#大*南至北&辽河岗$2016-02-17 07:43:15!,      
15950#大*西至东&辽河岗$2016-01-19 13:32:41!,      
00385#大*南至北&财政局岗$2016-03-08 09:23:06!,   
61333#大*东至西&惠宾西岗$2015-12-30 11:59:28!,   
10934#大*西至东&交通局岗$2016-02-28 11:49:47!,   
13989#大*北至南&石油岗$2016-03-12 14:56:23!,      
36533#大*东至西&钻井岗$2016-02-11 14:08:24!,      
12203#大*东至西&钻井岗$2016-01-28 09:54:55!,      
91659#大*东至西&惠宾西岗$2016-01-15 10:12:55!,   
03777#大*南至北&惠宾西岗$2016-02-23 09:53:41!,   
15287#大*南至北&惠宾西岗$2016-03-14 09:27:48!,   
11871#大*南至北&惠宾西岗$2016-03-19 15:28:23!,   
12788#大*北至南&交通局岗$2016-03-09 10:52:40!,   
66788#大*南至北&鹤鸣岗$2016-01-09 09:18:15!,      
66788#大*南至北&鹤鸣岗$2016-02-08 09:45:15!,      
66788#大*南至北&鹤鸣岗$2016-02-15 08:47:01!,      
66788#大*南至北&鹤鸣岗$2016-02-15 10:56:57!,      
10161#大*西至东&泰山岗$2016-02-27 06:52:08!,      
09771#大*南至北&五厂岗$2016-03-02 06:54:44!,      
50453#大*南至北&胜利岗$2016-03-12 19:05:56!,      
10414#大*南至北&胜利岗$2016-03-07 12:17:51!,      
09771#大*南至北&中街岗$2016-03-04 13:49:09!,      
09804#大*南至北&财政局岗$2016-02-27 17:13:36!,  


这种文件读的时候我写的速度不行,,

怎样才能读的快些??

回复

使用道具 举报

2

主题

10

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-12-11 11:45:02 | 显示全部楼层
帮我看看代码,

回复

使用道具 举报

2

主题

10

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-12-11 12:00:01 | 显示全部楼层
shi ReadFromFile(void)
{
        shi handle,i,j,k,f,flag=0;
        unsigned char cc,name[20],filename[20];
        unsigned char   buffer[8];
        unsigned char   buffer1[8];

                        shi total,g=0;
                        Total_Type = 0;
                        itoa(FileNum,buffer,10);

                        buffer[strlen(buffer)]=0x0;
                         // Warning(10,20,buffer);
                        strcpy(filename,"车牌");
                        strcpy(buffer1,".txt");

                        buffer1[4]=0x0;
                        filename[strlen(filename)]=0x0;

                        strcat(filename,buffer);
                        filename[strlen(filename)]=0x0;
                        strcat(filename,buffer1);filename[strlen(filename)]=0x0;
                 //        Warning(10,20,filename);
                handle = ffopen(filename,"rb");

         if(handle==-1)  { Warning(30,40,"车牌数据读取错误!"); return 0; }
         else
         {
           i=0;j=0;k=0;f=0;g=0;
           cc=ffgetc(handle);
        while(1)
        {
           if(cc==',')
           {
                  cc=ffgetc(handle); k=0; j++;  flag=0;


                 if((strcmp(Read_File[i][j].name0,Group[0].name))==0)
                 { f++;

                                strcpy(Read_CopyFile[i][g].name0,Read_File[i][j].name0);
                                strcpy(Read_CopyFile[i][g].name1,Read_File[i][j].name1);
                                strcpy(Read_CopyFile[i][g].name2,Read_File[i][j].name2);
                                strcpy(Read_CopyFile[i][g].name3,Read_File[i][j].name3);
                                strcpy(Read_CopyFile[i][g].name4,Read_File[i][j].name4);
                                strcpy(Read_CopyFile[i][g].name5,Read_File[i][j].name5);
                                Read_CopyFile[i][g].name0[strlen(Read_CopyFile[i][g].name0)]=0x0;
                                Read_CopyFile[i][g].name1[strlen(Read_CopyFile[i][g].name1)]=0x0;
                                Read_CopyFile[i][g].name2[strlen(Read_CopyFile[i][g].name2)]=0x0;
                                Read_CopyFile[i][g].name3[strlen(Read_CopyFile[i][g].name3)]=0x0;
                                Read_CopyFile[i][g].name4[strlen(Read_CopyFile[i][g].name4)]=0x0;
                                Read_CopyFile[i][g].name5[strlen(Read_CopyFile[i][g].name5)]=0x0;

                                g++;
                        }

                   Toto=f;
                  }
           if(cc=='*')       { cc=ffgetc(handle);  k=0; flag=1;}
           if(cc=='#')       { cc=ffgetc(handle);  k=0; flag=2;}
           if(cc=='!')       { cc=ffgetc(handle);  k=0; flag=3;}
           if(cc=='$')       { cc=ffgetc(handle);  k=0; flag=4;}
           if(cc=='&')       { cc=ffgetc(handle);  k=0; flag=5;}

           if(cc=='^')       { cc=ffgetc(handle);   i++;  j=0; k=0;}
           if(cc=='@')           break;
           if(flag==0)                 Read_File[i][j].name0[k]=cc;
          else if(flag==1)             Read_File[i][j].name1[k]=cc;
          else if(flag==2)             Read_File[i][j].name2[k]=cc;
          else if(flag==3)             Read_File[i][j].name3[k]=cc;
          else if(flag==4)             Read_File[i][j].name4[k]=cc;
          else if(flag==5)             Read_File[i][j].name5[k]=cc;
           k++;
          if(flag==0)                      Read_File[i][j].name0[k]=0x0;
          else  if(flag==1)             Read_File[i][j].name1[k]=0x0;
          else if(flag==2)             Read_File[i][j].name2[k]=0x0;
          else if(flag==3)             Read_File[i][j].name3[k]=0x0;
          else if(flag==4)             Read_File[i][j].name4[k]=0x0;
          else if(flag==5)             Read_File[i][j].name5[k]=0x0;
          if(ffeof(handle))        break;

           cc=ffgetc(handle);
        }
                 Total_Type=i;
         }

        ffclose(handle);
        return Total_Type;
}
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-12-11 12:15:01 | 显示全部楼层
把shi的结构帖出来
回复

使用道具 举报

2

主题

10

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-12-11 12:30:01 | 显示全部楼层
shi 就是int

不用管。。
你给我用tc写一个就行

回复

使用道具 举报

2

主题

10

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-12-11 12:45:01 | 显示全部楼层
我是对比第一个字段如果相等我就把后几个字段存入全局数组然后处理。。

可是我查询出来很慢,,能不能帮我个好的写法。。

查快点??

回复

使用道具 举报

0

主题

9

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-12-11 13:00:01 | 显示全部楼层
看不出来哪里影响了速度
不过
filename[strlen(filename)]=0x0;
Read_CopyFile[i][g].name5[strlen(Read_CopyFile[i][g].name5)]=0x0;
这样的语句应该是可以删除的
回复

使用道具 举报

2

主题

10

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-12-11 13:15:01 | 显示全部楼层
有没有什么别的办法能快点啊。
太慢了受不了啊


回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-12-11 13:30:01 | 显示全部楼层
要是能用多线程,就好了,
可以建一表,一边读,一边找,这样很方便
或是一次性都读取到内存里,再进行查找.
回复

使用道具 举报

2

主题

10

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-12-11 13:45:01 | 显示全部楼层
哎。。。。。。。。。。。。。。。。。
我好郁闷。
c语言没有什么好的办法吗,我c不行。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表