| 
 | 
 
 
 楼主 |
发表于 2019-7-23 09:32:35
|
显示全部楼层
 
 
 
- #include<stdio.h>
 
 - #include<string.h>
 
 - #include<map>
 
 - using namespace std;
 
 - int main(){//从fp文件中抽取行数为fp1中的随机数的数据
 
 -         map<int,int> mp;
 
 -         char buffer1[10],buffer[10000];//定义fp和fp1文件的读取每一行的数据
 
 -         FILE *fp,*fp1,*fp2;
 
 -         int i = 0;
 
 -         int j = 0;
 
 -         fp1 = fopen("E:\\Task.maweifang\\SL\\Quzhuo\\suijishu.txt","r");//fp1,随机数文件
 
 -         while(fgets(buffer1,10,fp1) != NULL){
 
 -         mp[j] = atoi(buffer1);
 
 -                 j++;
 
 -         }//构建索引和随机数之间的键值对map
 
 -         fclose(fp1);
 
  
-         fp = fopen("E:\\Task.maweifang\\SL\\Quzhuo\\other.pathway.result.2.txt","r");//fp文件,需要提取行数据的文件
 
 -         fp2 = fopen("E:\\Task.maweifang\\SL\\Quzhuo\\other222.txt","w");//fp2,写入文件
 
 -         while(fgets(buffer,10000,fp) != NULL)
 
 -         {
 
 -         i++;
 
 -                 if(mp.count(i))
 
 -                 {
 
 -                         fputs(buffer,fp2);
 
 -                         
 
 -                 }
 
 -                 
 
 -         }//判断i值是否在map中,如果在就吧读入的数据输出到fp2中;其中i是没读入一行就加1
 
 -     printf("%d",i);
 
 -         fclose(fp2);
 
 -         fclose(fp);
 
 -         return 0;
 
 - }//问题,本来i值最后的结果应该是fp文件的总行数,但结果却比总行数少了许多,不知道应该怎么解决
 
  复制代码 |   
 
 
 
 |