我打算从命令行读取一个文件。我想将这些行存储在数组中。但问题是我不知道行数。所以我不知道如何在数组中动态存储它。所以请帮忙。 (通过给出一些示例代码)
使用两个循环,在第一个循环中检查每一行的大小并添加到变量中。一旦它到达文件的末尾,您将获得将文件存储在数组中所需的总字节数。现在使用该total bytes变量动态地为数组分配内存。现在启动第二个循环,读取每一行并存储到该数组中。
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(void)
{
FILE * fp;
char * line = NULL;
size_t len = 0;
ssize_t read;
int i=0;
char **A;
A = (char **)malloc(sizeof(char *)*1); //creating char array of a[0][]
fp = fopen("/etc/motd", "r");
if (fp == NULL)
exit(EXIT_FAILURE);
while ((read = getline(&line, &len, fp)) != -1) {
A = (char **)realloc(A, sizeof(char **)*(i+1)); // adding one more row to array
*(A+i) = (char *)malloc(sizeof(char)*read); //adding required column
strcpy(A[i],line); // copying line to i-th raw of array
i++;
}
fclose(fp);
if (line)
free(line);
exit(EXIT_SUCCESS);
}