Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Lettura da file

  1. #1

    [C] Lettura da file

    Salve, vorrei chiedere una cosa semplice.
    Spiego subito il problema:
    devo leggere da un file una stringa alla volta (un rigo alla volta del file) con un codice del tipo:

    FILE *fp;
    char str[MAXNAME];
    fp=fopen("citta.txt", "r")

    fscanf(fp, "%s", str)!=EOF)
    printf("%s\n", str);

    fclose(fp);


    Il problema è che dovrei leggere le successive stringhe riaprendo e chiudendo il file. Ovvero ad ogni lettura apro e chiudo il file, non seguo il procedimento: apri file, fai tutte le letture, chiudi file.

    Aprendo e chiudendo ogni volta, mi stampa logicamente sempre la prima riga. C'è un modo invece di far continuare a leggere ogni volta la riga successiva? (come avviene quando tutte le fscanf vengono fatte all'interno della stessa apertura-chusura) file.

    Mi spiego meglio, dovrei fare in modo che un codice del tipo:

    main()
    {
    fp=fopen("citta.txt", "r")
    fscanf(fp, "%s", str)!=EOF)
    printf("%s\n", str);
    fclose(fp);

    fp=fopen("citta.txt", "r")
    fscanf(fp, "%s", str)!=EOF)
    printf("%s\n", str);
    fclose(fp);
    }

    non legga due volte la prima riga, ma legga la prima e poi la seconda.

    Spero di essere stato chiaro.
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Qualcosa del genere

    codice:
    	int actualpos;
    	char str[100];
    
    	FILE *fp=fopen("citta.txt", "r"); 
    	fscanf(fp, "%s", str);
    	actualpos=ftell(fp);
    	printf("%s\n", str); 
    	fclose(fp); 
    
    	fp=fopen("citta.txt", "r"); 
    	fseek(fp,actualpos,SEEK_SET);
    	fscanf(fp, "%s", str);
    	printf("%s\n", str); 
    	fclose(fp);
    anche se, a meno che non ti serva "didatticamente", penso che stai affrontando un problema cercando una soluzione dal punto di vista sbagliato.

  3. #3
    grazie ;-)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.