关于文件和结构体的两个问题!
1、对一个多行的文本文件按行进行数据提取,有没有什么办法直接去读取文件的第几行数据,不用从文件开始循环fgets来确定行数?
2、对于一个已经在头文件中定义过的结构体,要根据用户的输入值来确定需要建立几个这一类型的变量(预先无法知道具体的数量),并在子函数中分别赋值,要求所有结构体变量的值在整个程序的运行过程中一直有效,可以被别的函数调用!
--------------------请问大虾们用c语言怎么实现阿?
[解决办法]
第一题,基本上只能根据回车符号去判断是否换行,无法指定行数读取
第二题,
1。可以根据用户输入的个数去动态分配内存,而且结构体在获得空间后当函数退出后其空间仍然占用!
2。在main中申请内存。
[解决办法]
int num;
TYPE *Struct;
printf( "the number of the struct: ");
scanf( "%d ",&num);
if(num > 0);
Struct = (TYPE *)malloc(num *sizeof(TYPE));
...
free(Struct);
[解决办法]
如果需要处理的文件都是自己生成的,我一般是这么做的:
在建立文件的同时建立一个与文件一一对应数组,该数组专门用于存储文件的行偏移,并且数组的下标和行号相同,在生成文件时每写入一行就用ftell()读取一下偏移量并付给数组相应的值。这样每次相从文件的任意一行读取数据时,只需要调用一下指针就可以知道偏移量了!
当然,即使不是自己生成的也可以这么做。为了方便查询,可以把这些功能分装在一个函数里面!