Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    95

    [C] Lettura file di testo, evitare di leggere 2 volte la stessa riga

    Allora io scritto la seguente funzione per leggere un file di testo riga per riga e mettere ciacuna riga in un array dinamico:
    codice:
    #include <malloc.h>
    #include  <string.h>
    
    char** ReadFileLines(FILE *fp)
    {
    	char line[150];
    	char** lines=(char**)malloc(sizeof(char*));
    	int nlines=0;
        while (!feof(fp))
        {
        	fscanf(fp, "%[^\n]", line);
        	fgetc(fp);
        	lines[nlines] = malloc((1 + strlen(line))*sizeof(char));
        	strcpy(lines[nlines], line);
            nlines++;
            lines=(char**)realloc(lines,sizeof(char*)*(nlines+1));
         }
        lines[nlines]=NULL;
        return lines;
    }
    Il problema è che quando scorro l'array per stamparne i valori a video, la riga finale viene stampata a video più volte(addirittura se nel mio file di testo all'ultima riga segue un ritorno a capo, questa viene stampata 3 volte, altrimenti solo 2).
    Ecco come scorro l'array per stamparne i valori:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    # include "filelib.h"
    
    int main()
    {
    	FILE *fp;
    	char** lines;
    	char* line;
    	int i=0;
    	if (!(fp=fopen("/home/utente/nome_file.txt","r")))
    	{
    		printf("Errore in apertura");
    	    return 1;
    	}
    	lines=ReadFileLines(fp);
    	while((line=lines[i])!=NULL)
    	{
    		printf("%s\n", line);
    		i++;
    	}
    	fclose(fp);
    	return 0;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    95
    Non riesco, a capire, ma adesso sembra funzionare, senza che ho toccato nulla. Ieri avevo provato parecchie volte e mi faceva quel problema. Grazie, comunque, per l'attenzione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.