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

请问一下各位大佬,C语言中读取文件有没有类似于Python中的readlines()方法的函数?比如说有这样一个文件:
abcd
efghijk
lmnopq
读取之后返回一个二维数组:
{"abcd", "efghijk", "lmnopq"}
如果可以的话,请顺便告诉我,如果这个二维数组的长度和宽度不定时要怎么办

c语言没有直接读取返回数组的函数。
看你问题里文件内容格式是:一行一个字符串回车换行。
那么,用fgets一次读一行,你写循环调用这个fgets函数把读取的值放在数组里。
至于你说的数组长度宽度不定,在c里需用malloc动态申请内存。
方法1:用fseek和ftell获取整个文件字节数,然后用malloc申请一个整个文件大小的内存地址(二维数组在内存中就是一维)。然后在循环中每次读取一行到这个地址并计算一行长度,利用指针移得到每行首地址,最后所有行指针组成二维数组(行数也是动态申请)
方法2:你定义一个比较大的字符数组,作为零时存储变量,每次循环中读取一行到这个数组,再用strlen计算字符串长度,再用malloc按照这个长度申请一组地址(一行),并利用strcpy转移内容,最后组成二维数组。
方法3:直接用malloc申请很大的二维数组,循环读取获取内容后,strlen获取每行实际内容的长度。最后用realloc根据实际宽度和行数修改数组大小。
温馨提示:答案为网友推荐,仅供参考
相似回答