Visualizzazione dei risultati da 1 a 10 su 13

Hybrid View

  1. #1
    Grazie mille! Ora ho sistemato come hai detto ma nello strcpy mi da un'exception (Bad Access) come se io volessi entrare in una cella non allocata.
    Sai dirmi di nuovo dove sbaglio?
    Grazie davvero

    Ps: vengo dal php e dal java, dove non ho tutti questi problemi per una stringa ahah

    codice:
    /*     * Creo la matrice che ritornerò con i dati
         */
        int rows = 10;
        int cols = 3;
    
    //Creo le righe
        char *** result = calloc(rows, sizeof(char **));
    
    //Creo le colonne
        for (int i = 0; i < cols; i++)
        {
            result[i] = calloc(cols, sizeof(char *));
        }
    
    //Carico la matrice
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                char * stringa = "ciao";
                strcpy(result[i][j], stringa);
            }
            printf("\n");
        }

  2. #2
    Quote Originariamente inviata da MattiaMerlini Visualizza il messaggio
    Ps: vengo dal php e dal java, dove non ho tutti questi problemi per una stringa ahah
    Infatti codesti "linguaggi" sono per definizione diseducativi...
    Stai ancora tralasciando un passaggio fondamentale: non allochi lo spazio per le singole stringhe. Osserva con attenzione le tue calloc(): nelle sizeof hai char** e char*, ma manca l'ultima della catena, quella che alloca un dato numero di singoli char!

    Questo storico post contiene un esempio didattico pressoché completo su vari casi limite di allocazione, che copre ampiamente le esigenze di qualsiasi corso base sul linguaggio C. Ovviamente il caso della matrice di stringhe è ampiamente contemplato.
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

  3. #3
    Vero, diseducativi ma educativi per molti altri aspetti, tipo OOP che C non ha.
    Ho guardato il tuo intervento che mi hai linkato, molto interessante.

    Il fatto è che anche adesso che alloco lo spazio mi da ancora lo stesso errore, non so dove sbaglio.
    codice:
    //Carico la matrice    for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                result[i][j] = (char *) malloc(100 * sizeof(char));
                char * stringa = "ciao";
                strcpy(result[i][j], stringa);
            }
            printf("\n");
        }
    Mi sto incasinando per il niente mi sa

  4. #4
    Apparentemente nel tuo codice non vi sono errori, anche se la forma più sensata è la seguente:
    codice:
            for (int j = 0; j < cols; ++j)
            {
                result[i][j] = (char *)malloc(100 * sizeof(char));
                if (NULL != result[i][j])
                {
                    strcpy(result[i][j], "ciao");
                }
            }
            puts("");

    PS: purtroppo la OOP implementata in java e PHP è altrettanto pessima, certamente peggiore rispetto a quella (già scadente) di C++. Se vuoi davvero imparare un OOPL puro usato professionalmente e universalmente valido, devi rivolgere la tua attenzione ad Eiffel, Ada, e qualche dialetto Smalltalk (come Squeak).
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    PS: purtroppo la OOP implementata in java e PHP è altrettanto pessima, certamente peggiore rispetto a quella (già scadente) di C++. Se vuoi davvero imparare un OOPL puro usato professionalmente e universalmente valido, devi rivolgere la tua attenzione ad Eiffel, Ada, e qualche dialetto Smalltalk (come Squeak).
    Volevo fare lo stesso commento. Anche se a dirla tutta al giorno d'oggi di sono altri linguaggi degni di nota.
    Comunque Eiffel è secondo me molto molto interessante.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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