#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();
}