|  | 
 
 
 楼主|
发表于 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文件的总行数,但结果却比总行数少了许多,不知道应该怎么解决
 | 
 |