c语言实现把文件中数据读取并存到数组中

这篇博客展示了如何使用C++编程语言从文本文件中读取数据并将其存储到一维和二维数组中。示例代码分别演示了读取1.txt和2.txt文件的方法,文件内容分别为连续的数字序列。通过fscanf函数逐个读取文件中的整数,并利用fclose函数关闭文件。程序最后将读取到的数据打印出来。

1.txt

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

2.txt

1 2 3 4 5

2 3 4 5 6

4 5 6 7 8

程序代码:

// C++读取文本到数组.cpp : 定义控制台应用程序的入口点。

#include <stdio.h>
#include <Windows.h>

int readfile1D()
{
	char a[100];
	int i;
	FILE *fp = fopen("1.txt","r");
	if(fp == NULL)
	{
		printf("文件读取无效.\n");
		return -1;
	}
	for(i = 0; !feof(fp); i++)
		fscanf(fp, "%d", &a[i]);

	fclose(fp);

	for(i=0; i < 20; i++)
		printf("%d ", a[i]);
	printf("\n");

	return 0;
}

int readfile2D()
{
	int a[3][5];
	int i,j;
	FILE* fp = fopen("2.txt","r");
	if(fp == NULL)
	{
		printf("文件无效");
		return -1;
	}
	for(i=0; i<3; i++)
	{
		for(j=0; j<5; j++)
		{
			fscanf(fp,"%d",&a[i][j]);
		}
		//fscanf(fp,"\n"); 不要也罢
	}

	fclose(fp);

	for(i=0; i<3; i++)
	{
		for(j=0; j<5; j++)
			printf("%d ", a[i][j]);
		printf("\n");
	}
	printf("\n");

	return 0;
}

int main()
{
    readfile1D();
   	readfile2D();
   	return 0;

}

### C语言文件读取并存储到字符数组 在C语言中,可以通过标准库函数 `fopen` 打开文件,并利用缓冲区逐字节或逐行读取数据至字符数组。以下是具体实现方法: #### 使用静态数组存储文件内容 如果已知文件大小不会超出某个固定范围,则可以定义一个具有适当大小的静态字符数组用于存储文件内容。 ```c #include <stdio.h> #define MAX_SIZE 1024 // 假设最大文件大小为1024字节 int main() { FILE *fp = fopen("example.txt", "r"); // 打开文件以只读模式 if (!fp) { perror("无法打开文件"); return -1; } char buffer[MAX_SIZE]; // 静态字符数组 size_t bytes_read = fread(buffer, sizeof(char), MAX_SIZE - 1, fp); // 将文件内容读入buffer buffer[bytes_read] = '\0'; // 确保字符串以'\0'结尾 fclose(fp); printf("文件内容:\n%s\n", buffer); return 0; } ``` 上述代码通过 `fread` 函数一次性将整个文件的内容加载到预定义的静态数组中[^1]。注意,在实际应用中需确保目标数组容量足够大以免溢出;同时也要记得给最后留一位空间放置终止符`\0`以便后续作为常规C风格字符串处理[^3]。 #### 动态分配内存适应任意尺寸文件 当不确定待读取文件的确切规模时,可采用动态内存管理技术——即先探测文件总长度再据此申请相应数量的空间完成拷贝动作。 ```c #include <stdio.h> #include <stdlib.h> long get_file_size(FILE* file){ fseek(file , 0L , SEEK_END); long sz = ftell(file); rewind(file); return sz; } int main(){ const char* filename="data.txt"; FILE* fptr=fopen(filename,"rb+"); if(!fptr){fprintf(stderr,"%s 文件不存在!\n",filename);exit(EXIT_FAILURE);} long filesize=get_file_size(fptr); char* content=(char*)malloc((filesize+1)*sizeof(char)); // 多预留一字节作null terminator if(content==NULL){ fprintf(stderr,"Memory allocation failed.\n"); exit(EXIT_FAILURE); } size_t read=fread(content,sizeof(char),filesize,fptr); content[filesize]='\0'; puts(content); free(content); fclose(fptr); return EXIT_SUCCESS; } ``` 此段程序首先计算出了指定文档的实际占用磁盘单元数目(单位:byte),接着借助于`malloc()`命令按需购置恰当规格的新区域存放即将提取出来的资料副本[^4]。务必确认释放不再使用的堆上资源以及关闭访问过的流对象以防泄露隐患发生。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值