c语言如何读取txt内容到数组?

如题所述

第1个回答  2018-03-09
一、编程思路。1 以文本方式打开文件。2 循环用fscanf格式化输入数据到数组。3 判断fscanf的返回值,如果显示到达文件结尾,退出输入。4 关闭文件。5 使用数据。二、代码实现。设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔。代码可以写作:
#include <stdio.h>int main(){ int v[100];//开一个足够大的数组。 int i = 0, j; FILE *fp;//文件指针 fp = fopen("in.txt", "r");//以文本方式打开文件。 if(fp == NULL) //打开文件出错。 return -1; while(fscanf(fp, "%d", &v[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF) i++; fclose(fp);//关闭文件 for(j = 0; j < i; j ++)//循环输出数组元素。 { printf("%d ", v[j]); } return 0;}当文件内容为:1 35 6 8 9 9 10 123 3476 54 98程序输出:1 35 6 8 9 9 10 123 34 76 54 98
第2个回答  2018-03-09
采用事先分配一个大数组的方式不能确保不越界,并不是理想的方案。应该在读取的过程中动态分配数组:

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE *fp=fopen("c:\\1.txt","r");
int i,*a=NULL;
for (i = 0; !feof(fp); i++) {
a=(int *)(a?realloc(a,sizeof(int)*(i+1)):malloc(sizeof(int)));
fscanf(fp,"%d",a+i);
printf("%d\t",a[i]);
}
fclose(fp);
free(a);
return 0;
}
//---------------------------------------------------------------------------
第3个回答  2018-03-09
顶楼的 简单 正解~

就是有个 错别字,feof(fp)
相似回答