您当前的位置:首页 > 互联网教程

C语言读取文件如何返回一个数组

发布时间:2025-05-11 23:18:31    发布人:远客网络

C语言读取文件如何返回一个数组

一、C语言读取文件如何返回一个数组

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

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

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

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

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

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

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

二、如何用c语言编写查询数组中的元素

1、对于数组的查询,其实就是对数组中数据做一个遍历。

2、最常用的方法就是通过循环对数组中的元素逐个取值,并与参考值(要查询的值)做比对,并处理结果。

3、下面是一个简单的对一维数组进行查询的样例。

4、函数功能:对输入的数组元素进行查询,打印符合查询值的元素位置,并返回查询到的元素总数。

5、函数声明: int array_query(int*a, int n, int v);

6、a:输入的数组,类型为整型指针,表示整型数组。可以根据实际需要进行调整。

7、整型,返回查询到的元素个数。如果出错返回-1。

8、intarray_query(int*a,intn,intv)

9、if(a==NULL||n<=0)return-1;//出错处理

10、printf("%d\n",i);//找到元素,打印下标,并累计统计值

三、C语言提取文件内容保存到字符串数组问题

1.文件如果不是要读同时又要写的情况,用'r'属性打开就可以了;

2.while((fgets(&str[i],100,fp)!= NULL))应该写成while((fgets(str,100,fp)!= NULL))

原因:fgets是读取文件中的一整行数据放到第一个参数位置,

你第一行装入str+0位置,第二行放到str+1??这个没有道理呀,何况你下面还

3.我读你程序,似乎是要将文件中的所有单词全部读出,而且文件中每个单词占用一行,

象程序中的定义,你所有单词的字符串的字符个数不能超过1024个。

如果要将小于1024个单词读出来,需要统计一下最长单词的字符个数,比如我们假定是9,

那么我们程序中就可以定义数组了(每行单词字符加换行符加字符串结尾符有时还有回车符):

char world[1024][12],str[1024][12];

每次用fgets(str[i],10,fp)读进来,i可以从0开始,每单词加1,程序可以象下面设计:

#define PATH"/Users/SQZS/Desktop/word.txt"

char world[1024][12],str[1024][12];

for( i=0;i<nNumber;i++) printf("%s",str[i]);

else printf("不能打开文本文件'%s'.\n",PATH);