Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2019
    Messaggi
    10

    [C] Aprire un file .csv e caricare valori in array

    Salve sono abbastanza nuovo nella programmazione in C. Non riesco a capire come leggere un file .csv e scrivere le sue informazioni in un array.
    Esempio:
    Ho un file .csv con tre campi: codice_prodotto, nome_prodotto, prezzo_prodotto. Dopo aver letto correttamente il file vorrei scrivere le informazioni in tre array diversi.
    Come posso fare??
    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Sai aprire il file e leggere linea per linea? Mostra il codice da cui possiamo partire ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2019
    Messaggi
    10
    No è proprio quello che non riesco a fare
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    
    int main()
    {
        FILE *fPtr;
        char codice_prodotto[10];
        char nome_prodotto[15];
        char prezzo_prodotto[10];
        if ((fPtr = fopen("elencoProdotti.csv","r")) == NULL)
            {
                puts("Impossibile aprire file");
            }
        return 0;
    }
    Sono arrivato fino a questo punto, cioè a verificare la corretta apertura del file in lettura.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quindi sai aprire il file.

    A questo punto imposta un ciclo while che giri finché non termina il file (usa la feof) e al suo interno leggi una linea con la fscanf.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2019
    Messaggi
    10
    Mi potresti fare un esempio?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da McFonzie Visualizza il messaggio
    Mi potresti fare un esempio?
    Un esempio? Ma sono poche righe ... cerca di proporre tu qualcosa di tuo in base ai consigli altrimenti non impari, copi soltanto.

    Leggi la documentazione di fscanf

    http://www.cplusplus.com/reference/cstdio/fscanf/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2019
    Messaggi
    10
    Ho letto la documentazione ma proprio non riesco a capire come devo scrivere la fscanf per leggermi i valori separati da ",".
    Mi puoi aiutare?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    E prova a scrivere qualcosa con questa fscanf e ti aiuto ...

    Ma anche una ricerca con google non la sai fare? Esistono mille esempi pronti di utilizzo !
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2019
    Messaggi
    10
    Ho provato a fare una ricerca su google, ma non trovo casi simili al mio, sono più che altro su letture di file .txt separate da spazi bianchi. Quello lo so fare, non capisco come funzioni con i file .csv e se i campi sono separati da "," o ";" visto che io per scrivere il file ho usato Excel e salvato il file in .csv quando cerco di aprirlo me lo visualizza in celle. Cioè proprio non capisco la sintassi della funzione...
    codice:
    #include <stdlib.h>
    #include <string.h>
    
    
    int main()
    {
        FILE *fptr;
        int codice_prodotto;
        char nome_prodotto[15];
        int prezzo_prodotto;
        if ((fptr = fopen("elencoProdotti.csv","r")) == NULL)
            {
                puts("Impossibile aprire file");
            }
        fscanf(fptr,"%3d[^,]%c[^,]%3d[^\n]",&codice_prodotto,nome_prodotto,&prezzo_prodotto);
        for(int i=0;i<15;i++)
        {
            printf("%c",nome_prodotto[i]);
        }
    printf("%3d %3d",codice_prodotto,prezzo_prodotto);
        return 0;
    }
    Ho provato a scrivere questo cercando di escludere nella lettura i separatori e dando la dimensione dei campi di interi. Il compilatore non mi da errori ma quando stampo mi da in output una cosa totalmente diversa.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Non usare %c con la for se hai una stringa ... usa %s

    codice:
    	if ((fptr = fopen("elencoProdotti.csv","r")) == NULL)
            {
                puts("Impossibile aprire file");
    			return(1);
            }
    
    
        fscanf(fptr,"%d,%[^,],%d",&codice_prodotto,nome_prodotto,&prezzo_prodotto);
        printf("%3d  %15s  %3d\n", codice_prodotto, nome_prodotto, prezzo_prodotto);
    
    
    	return 0;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

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.