Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    38

    [c] array di stringhe tramite puntatori

    Ciao a tutti ho provato a cercare dappertutto ma non lo riesco a trovare da nessuna parte!!
    come si inizializzano e si dichiarano gli array di stringhe

    io vorrei fare un array i cui elementi sono delle stringhe!

    questi sono i passaggi che avevo in mente io:

    1) l'utente immette il numero di elementi di cui e' formato l'array principale definiamolo come ArrayP.

    2) tramite un ciclo inserisce la dimensione di ogni elemento dell'array principale

    3) inserisce la stringa nell'elemnto creato!

    4) controlla che e' stata inserita in maniera corretta!

    io ho provato a scriverlo cosi, solo che se ci metto dimensione 1 e poi ci vado a scrivere una parola di 2000 caratteri me la legge comunque come me mai dove sbaglio??

    mi potete dre una mano??
    grazie mille ciao!

    codice:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    /* definizione della funzione main */
    int main(int argc, const char * argv[])
    {/**/
        /* dichiarazione delle variabili locali */
        int n;
        int i;
        int d = 0;
        char *b;
    
        b = (char*)calloc(d, sizeof(char));
    
        /* acqusizione delle formule */
        printf("Inserisci il numero totale degli elemnti dell'arrayprincipale:\n");
        scanf("%d", &n);
        for (i=0; i<n; i++) {
            printf("dimensione di ogni elemento[%d]??\n", i);
            scanf("%d", &d);
            //for (j=0; j<d; j++) {
                printf("inserisci l'elemento[%d]:\n", i);
                scanf("%s", b);
                printf("l'elemento inserito e': %s\n", b);
    
            //}
        }
        
        printf("Arrivederci\n");
        return 0;
    }

  2. #2
    All' interno del secondo for metti
    codice:
    do{ 
    printf("inserisci l'elemento[%d]:\n", j); 
    scanf("%s", b); 
    } 
    while(strlen(b)>d);
    strlen sta per string length ed è una funzione che ritorna la lunghezza della stringa
    Haters gonna hate

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    38
    mi continua a dare dei problemi....

    questo e' l'output:
    Inserisci il numero totale degli elementi:

    2
    dimensione dell' elemento[0]??
    5
    inserisci l'elemento[0]:
    alessandro
    inserisci l'elemento[0]:
    ciao
    inserisci l'elemento[1]:
    andrea
    inserisci l'elemento[1]:
    cane
    inserisci l'elemento[2]:
    forse
    inserisci l'elemento[3]:
    fare
    inserisci l'elemento[4]:
    male
    maledimensione dell' elemento[1]??

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Con questa

    b = (char*)calloc(d, sizeof(char));

    dato che d è 0, non creerai altro che un problema di accesso in memoria.

    Per un array di stringhe, prevedi un "puntatore doppio a char" e alloca un numero di "puntatori a char" pari al numero di stringhe da memorizzare.

    Poi, utilizza una stringa allocata con una dimensione abbastanza grande per l'input e infine, alloca lo spazio per questa stringa con uno dei puntatori dell'array precedente e copiaci la stringa.

    Più facile a farsi che a dirsi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    38
    scusami, ma non ho capito benissimo, non e' che mi potresti scrivere qualcosa??
    l'unica cosa che ho capito e' di fare una cosa del genere:
    codice:
    int main(int argc, const char * argv[])
    {/**/
        /* dichiarazione delle variabili locali */
        int n;
        int i;
        int d;
        char **b;
        int j;
    
        b = (char**)calloc(d, sizeof(char));

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Ciao..intendeva dire una cosa di questo tipo:
    codice:
    int main(int argc, const char * argv[])
    {/**/
        /* dichiarazione delle variabili locali */
        int quante,lunghezza;
        int j;
        int i;
        
        char **b;
        
    
       cout << "Quante parole  vuoi inserire? ";
       cin >> quante;
       b = (char**) calloc(quante,sizeof(char*));
       for (int i =0;i<quante;i++)
       {
           cout << "Dimmi la lungezza della " << i <<" parola ";
           cin >> lunghezza;
           b[i] = (char*) calloc(lunghezza+1,sizeof(char));
       }
    }

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.