C++中怎样在一个程序里读取两个txt文件,并分别赋给两个数组,希望能详细些?

如题所述

#include <stdio.h>

#include"string.h"

#include <stdlib.h>

#define N 100000

int main() {

/*_________________________________________________*/

    FILE *fp,*fl;

    char b[N + 1],a[N+1];

    //判断文件是否打开

    if ( (fp = fopen("D:\\文件2.txt", "rt")) == NULL||(fl = fopen("D:\\文件1.txt", "rt")) == NULL )/*这里D:\\ 文件1和2.txt 是路径;读取D盘下,名为(文件1和2)的文本文件*/ 

        puts("文件读取失败!\n");

        exit(0);

    }

    else

    {

    puts("文件读取成功");

    puts("开始计算");

    printf("\n");

    //循环读取文件1的每一行数据储存到a数组中 

    while( fgets(a, N, fl) != NULL )

{

/*__________________________________________*/

printf("以下是文件1的内容:\n");

printf("%s\n\n",a); 

/*___________________________________________*/   

    }

    //循环读取文件2的每一行数据储存到b数组中 

    while( fgets(b, N, fp) != NULL )

{

/*__________________________________________*/

printf("以下是文件2的内容:\n");

printf("%s\n",b); 

/*___________________________________________*/   

    }

   

    //结束关闭文件

    fclose(fp);

    fclose(fl);

    return 0;

}

追问

您好!如果我要提取的是这样两个txt文件,是单列的数据而且不需要把读取的数据输出应该怎样改呢?

追答

两个while中的代码删了,把下面的按位插入
这是插在文件1的while循环中的
int j=0;
double s[111];//这个数组长度尽量大一点,防止数组越界
fscanf(fl,"%lf",&s[j++]);//j是文本中数的个数
for(int i=0;i<j;i++)//这两句就是为了可视化检测结果,可以删除
printf("%lf\n",s[i]);//
————————————————————————————
这是插在文件2的while循环中的

int k=0;
double score[111];//这个数组长度尽量大一点,防止数组越界
fscanf(fp,"%lf",&score[k++]);//k是文本中数的个数;
for(int i=0;i<k;i++)//这两句就是为了,在可视化检测结果,可以删除
printf("%lf\n",score[i]);//

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-18

要读取的txt文件内容是什么样子不太清除,所以直接给出一些建议吧。

建议你这样试试看:

    通过fstream 去读取文件

    ifstream inFile1("books.txt",ios::in|ios::binary);
    if(!inFile1) {
    cout << "error" <<endl;
    }

    Book book; // 举个例子用Book类 示范
    while(inFile1.read((char *)&book, sizeof(Book))) { //一直读到文件结束

    //这里给数组赋值

    }

    inFile1.close()关闭文件。 

注意事项:

   打开文件后需要检测inFile 是否为空,否则会出现异常。另外结束要关闭文件.

相似回答