从命令行和存储中读取可更改的行文件

问题描述 投票:0回答:2

我打算从命令行读取一个文件。我想将这些行存储在数组中。但问题是我不知道行数。所以我不知道如何在数组中动态存储它。所以请帮忙。 (通过给出一些示例代码)

c arrays file multidimensional-array dynamic
2个回答
0
投票

使用两个循环,在第一个循环中检查每一行的大小并添加到变量中。一旦它到达文件的末尾,您将获得将文件存储在数组中所需的总字节数。现在使用该total bytes变量动态地为数组分配内存。现在启动第二个循环,读取每一行并存储到该数组中。


0
投票
#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);
}
© www.soinside.com 2019 - 2024. All rights reserved.