Puffern einer Reihe von Zeilen aus einer Datei und Speichern in einem Array in C

Dies könnte eine sehr ineffiziente Methode sein, aber es funktioniert

Dieser Code liest eine Datei durch, speichert jeweils 8 Textzeilen in einem globalen Array (dies sollte nach Möglichkeit besser sein) und wird zur weiteren Verarbeitung gesendet.

Hier ist der Code

int count = 0;             //global
char *array_buffer[8];     //global

void line(char *line_char)
{

    int lent = strlen(line_char);
    array_buffer[count] = line_char;

    printf("%d\n",count);

    if (count == 8)
    {

        int row,col;
        for(row = 0; row<count; row++){
            printf("%d\n",row);
            for(col = 0; col<=lent; col++) {
                printf("%c", array_buffer[row][col]);
            }
        printf("\n");   
        }
    count = 0;
    }

    count++;
}



int main(int argc,char **argv)
{

    clock_t start = clock();

    FILE *fp = fopen(argv[1], "r");
    if(fp == NULL )
    {
        printf("Couldn't open file %s",argv[1]);
    }
    char buff[512];

    while (fgets(buff, 512, fp) != NULL )
    {
        line(buff);             /*sending out an array having one line*/
    }

    return 0;
}

Das Problem ist, dass beim Drucken des Inhalts von array_buffer die letzte Zeile im Puffer achtmal ausgegeben wird. (d. h. die achte Zeile liest in jedem Zyklus). Das ist ziemlich offensichtlich

array_buff[0]
....
array_buff[7]

alle zeigen auf die adresse der zeile 8

Hilfe bei der Lösung dieses Problems? Ich weiß, dass es möglicherweise nicht der richtige Weg ist, etwas zu puffern!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage