C语言读取文件如何返回一个数组
发布时间:2025-05-11 23:18:31 发布人:远客网络
一、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);