C++读取简单数据保存在数组中

#include<stdio.h>
int main()
{
FILE *f;
int a[2],i;
f=fopen(“C:\a.txt”,“r”);//假设文件a.txt第一行是1,第二行是2

if(f==NULL)
{
printf(“没有该文件”);
return;
}
for(i=0;i<2;++i)
fscanf(f,"%d",&a[i]);
fclose(f);
for(i=0;i<2;++i)
printf("%d\n",a[i]);
return 0;
}

a.txt的内容是
00001 张小明 53 80.5 88.5
00002 李岳 90.5 89 67.5

即每行一个记录,分别存放:编号、姓名、成绩1、成绩2、成绩3
编号是整型的数据,姓名是字符串,成绩都是浮点数,各个数据之间以空格分割

#include<stdio.h>
void main()
{ FILE *fp;
int number[100],n,i;
char name[100][10],buffer[256];
float score[100][3];
if ( fp=fopen(“c:\a.txt”,“r”) )
{ for ( i=0,n=0;i<100;i++ )
{ fgets(buffer,256,fp);
sscanf(buffer,"%d %s %f %f %f",&number[i],name[i],&score[i][0],&score[i][1],&score[i][2]);
n++;
if ( feof(fp) ) break;
}
fclose(fp);
}
if ( n>0 )
for ( i=0;i<n;i++ )
printf("%05d %10s %5.1f %5.1f %5.1f\n",number[i],name[i],score[i][0],score[i][1],score[i][2]);
}

每行是一个字符串,每行不超过127个字符(用数组存字符串,最后一位存’\0’),根据每行的内容(字符,数字,字符串)选取fgets、fscanf或者fgets,选取fgets进行读取:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv)
{
FILE* rf = fopen(“input.txt”,“r”);
char a[1024][128];
int i=0;
while(fgets(a[i],128,rf))i++;
int n=i;
printf(“行数:%d\n”,n);
fclose(rf);
i=0;
while(i<n)
printf("%s",a[i++]);
system(“pause”);
return 0;
}
my.txt,共有N行7列,可以用getline一次读取一行,对每行的数据再进行处理,这个N应该要读完了才知道,可以用容器vector,list等,动态分配大小,使用前不必知道数据的大小。

#include
#include
#include
using namespace std;

void main()
{
int a[10];
ifstream fin(“mydata.txt”);
for(int i=0;i<10;i++)
fin>>a[i];
for(int i=0;i<10;i++)
cout<<a[i]<<endl;

ofstream fout("mynewdata.txt");
fout<<"the new data has written";
fin.close();
fout.close();
cin.get();

}

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值