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

    [C] Aprire un file e memorizzare il contenuto in una matrice

    Salve a tutti.
    Sto cercando qualcuno che mi possa aiutare nel mio problema. Sono alle prime armi con la programmazione in linguaggio c.
    devo risolvere il seguente problema:
    si realizzi un programma in grado di leggere in ingresso da un file di testo, il cui nome deve essere inserito da tastiera, una matrice di dati interi di dimensione massima 100x100. la matrice non è necessariamente quadrata.
    All'interno del file, gli elementi di ogni riga della matrice sono separati tra di loro da almeno uno spazio e sono scritti su un'unica riga nel file(quindi, righe diverse del file corrispondono a righe diverse della matrice).
    ad esempio il contenuto del file è il seguente:
    101 0 0 401
    0 3 0 300
    9803 0 0 306
    0 1201 0 10
    0 203 304 1400
    Il file riesco ad aprirlo, il mio problema non è quello.Qualcuno sa però come posso leggere i dati del file e salvarli in una matrice senza però conoscere nè il numero delle righe nè il numero delle colonne.
    Ringrazio chiunque riesca ad aiutarmi a risolvere questo problema.

    La mia soluzione, ho meglio quello che ho provato a fare, ma il programma non mi gira correttamente:
    codice:
     printf("Inserire il nome del file: ");
        scanf("%s", str);
    
        if((fp=fopen(str, "r"))==NULL) //verifico anche che non ci siano errori nell'apertura dei file
        {
            printf("FILE %s NON APRIBILE!!!\n", str);
            exit(-1);
        }
    
        // legge ogni riga e salva i dati letti all'interno di una matrice
        while(1)
        {
        res=fgets(buff, 200, fp);
        if( res==NULL )
            {
            break;
            }
        else //salvo ogni riga in una matrice
            {
                scanf("%c",&res[k]); //leggo il primo carattere
                if (res[k]!= ' ') //é diverso dallo spazio?
                {
                    k++; //se si incremento la posizione e vado a leggere il secondo carattere
                }
                else //altrimenti scrivi i caratteri fin ora nella posizione
                    {
                        mat[riga][colonna]=res[k];
                        printf("[%d][%d]=%c\n",riga,colonna,res[k]);
                        colonna++;
                    }
            }
                riga++;
                colonna=0;
        }
    
        // chiude il file
        fclose(fp);

  2. #2
    Se nn salti la parte di codice prima del main forse provo a darti una mano...
    ho copiato e incollato i ltuo prog al c e successivamente m sn accorto che era mezzo incompleto...

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.