|

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