Archief - C jump lines in file

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

mtm

Legacy Member
Als ik data uit een gewone tekstfile haal en wil uitschrijven, zou ik graag wille dat die de eerste x aantal regels skipt en die niet uitprint, omdat dit commentaar is. is dit op de één of andere manier mogelijk.

bijkomend vraagske: is het ook mogelijk om die data per 25 lines uit te schrijven?

Tyfius

Legacy Member
Lijnen uitlezen kan je via fgets. Steek dit in een while loop tot NULL en dan kan je binnen die while een aantal controle lussen steken, eentje om te bepalen welke regels je wel of niet wil afdrukken, ergens tijdelijk opslaan en pas na x aantal regels de hele inhoud dumpen...

Something like this:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LINE 1024
#define COMMENTS_LINES 5

void dumplines(char lines[][MAX_LINE])
{
        int i = 0;
        for (i = 0; i < 25; i++) {
                fprintf(stdout, "%s\n", lines[i]);
        }
}

int main(int argc, char *argv[])
{
        char dump[25][MAX_LINE];
        char line[MAX_LINE];
        FILE *fp = NULL;
        int lines = 0;
        int i = 0;

        memset(dump, 0, (size_t)(25 * MAX_LINE));
        memset(line, 0, MAX_LINE);

        fp = fopen("test.txt", "r");
        if (fp == NULL) {
                fprintf(stderr, "Opening file failed!\n");
                return EXIT_FAILURE;
        }

        while (fgets(line, MAX_LINE, fp) != NULL) {
                if (lines > COMMENTS_LINES) {
                        strncpy(dump[i], line, strlen(line));
                        i++;

                        if (i == 25) {
                                i = 0;
                                dumplines(dump);
                        }
                }

                lines++;
        }

        return EXIT_SUCCESS;
}

mtm

Legacy Member
Thanks Tyfius, die memset-functie kende ik dus niet. Eigenlijk best wel handig ...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan