c语言将文件内容读入数组中

Python013

c语言将文件内容读入数组中,第1张

#include <stdio.h>

int main(int ac, char *pav[])

{

if (ac!=2){

printf("程序名 要读取的文件名\n")

printf("test.exe 1.txt\n")

return 0

}

FILE *fp = fopen(pav[1],"r+")

if(fp == 0)

{

printf("fail to open the file1 !\n")

return 0

}

char buf[256] = {0}

while(!feof(fp))//判断文件是否已结束 

{

fgets(buf,256,fp)

}

printf(buf)

return 0

}

#include<stdio.h>

#include<stdlib.h>

#define N 10000

int main()

{

FILE *fp

if((fp=fopen("D:\\123.txt","r"))==NULL)//判断文件是否打开成功

{//读取D盘下,名为123的文本文件

printf("文件打开失败\n")

exit(0)

}

else

printf("文件打开成功\n")

double a[N]

for(int i=0i<5i++)//读取五个浮点型数据

fscanf(fp,"%lf,",&a[i])//fscanf函数固定格式读取文本中的数据;

for(int i=0i<5i++)

printf("%.6lf,\n",a[i])

fclose(fp)

}

c语言没有直接读取返回数组的函数。

看你问题里文件内容格式是:一行一个字符串回车换行。

那么,用fgets一次读一行,你写循环调用这个fgets函数把读取的值放在数组里。

至于你说的数组长度宽度不定,在c里需用malloc动态申请内存。

方法1:用fseek和ftell获取整个文件字节数,然后用malloc申请一个整个文件大小的内存地址(二维数组在内存中就是一维)。然后在循环中每次读取一行到这个地址并计算一行长度,利用指针移得到每行首地址,最后所有行指针组成二维数组(行数也是动态申请)

方法2:你定义一个比较大的字符数组,作为零时存储变量,每次循环中读取一行到这个数组,再用strlen计算字符串长度,再用malloc按照这个长度申请一组地址(一行),并利用strcpy转移内容,最后组成二维数组。

方法3:直接用malloc申请很大的二维数组,循环读取获取内容后,strlen获取每行实际内容的长度。最后用realloc根据实际宽度和行数修改数组大小。