情形一:文件只有一行数据
文件内容 :1 2 3 4 5
方法 一:
int main()
{
FILE*fp=NULL;
int buff[255];
int i=0;
fp=fopen("D:/Data_Structure/test.txt","r");
while(fscanf(fp,"%d", &buff[i])!=EOF)
{
i++;
}
printf("%d\n", i);
for(int j=0;j<i;j++)
{
printf("%d ", buff[j]);
}
return 0;
}
方法 二:
int main()
{
FILE*fp=NULL;
int buff[255];
char c;
int i=0;
fp=fopen("D:/Data_Structure/test.txt","r");
while(1)
{
fscanf(fp,"%d", &buff[i]);
c=fgetc(fp);
if(c=='\n'|| c == EOF)
{
break;
}
i++;
}
printf("%d\n", i);
for(int j=0;j<=i;j++)
{
printf("%d ", buff[j]);
}
return 0;
}
情形三:文件中存在多行数据
文件内容:
1 2 3 4 5
1 4 4
5 6 7
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
FILE*fp=NULL;
int buff[255];
char c;
int i=0;
fp=fopen("D:/Data_Structure/test.txt","r");
while(1)
{
i=0;
while(1)
{
fscanf(fp,"%d", &buff[i]);
c=fgetc(fp);
if(c=='\n' || c == EOF) //这里写c == EOF的原因是文件末尾(最后一行时没有换行符号)。
{
break;
}
i++;
}
printf("%d\n", i);
for(int j=0; j<=i; j++)
{
printf("%d ", buff[j]);
}
printf("\n");
if (c == EOF)
{
break;
}
}
return 0;
}