#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]);//
要读取的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 是否为空,否则会出现异常。另外结束要关闭文件.