Matrice di stringhe

di il
41 risposte

Matrice di stringhe

Come posso creare una matrice N*M di stringhe lunghe M ?

41 Risposte

  • Re: Matrice di stringhe

    Dinamicamente con la malloc
  • Re: Matrice di stringhe

    Ma non c'è un altro modo ? Perché la malloc è un'azione che non mi è stata insegnata
  • Re: Matrice di stringhe

    Ma N e M sono valori costanti o variabili con valori introdotti da tastiera?
  • Re: Matrice di stringhe

    Rimangono costanti
  • Re: Matrice di stringhe

    Rimangono costanti significa che non cambiano nel corso del programma.

    La domanda è: sono inserite all'inizio dall'utente oppure sono note prima di eseguire il programma?

    Se sono note a priori puoi dichiarare il tuo vettore sin dall'inizio come vettore costante:
    
    #define M 6
    #define N 10
    ...
    
    int matrice[M][N];
    
    altrimenti devi usare la malloc o sue varianti:
    
    int **matrice;
    
    matrice = (int **)malloc(M*sizeof(int *));
    for(i=0; i<M; ++i)
       matrice[i] = (int *)malloc(N*sizeof(int));
    
  • Re: Matrice di stringhe

    Sono note con la #define
    Ma rimane il problema di come inserire le varie stringhe nelle righe della matrice
  • Re: Matrice di stringhe

    Ho modificato il messaggio sopra rispondendoti.
  • Re: Matrice di stringhe

    Sarebbe corretto quindi inserire da tastiera facendo:
    for(i=0; i<N; i++)
    {
    scanf("%s", matrice[M]);
    }

    ?
  • Re: Matrice di stringhe

    Se usi il %s significa che vuoi leggere stringe, mentre matrice[M] è una specifica casella, tra l'altro fuori dal range della matrice dichiarata.
    Basta fare:
    
    for(i=0; i<N; i++){
        scanf("%s", matrice[i]);
    }
    
  • Re: Matrice di stringhe

    Quindi lo assumo come vettore al momento dell'input.
    Anche perché poi devo passare questa matrice ad un'altra funzione e mi segna un errore
  • Re: Matrice di stringhe

    Una matrice è un vettore di vettori.
    Quindi l'i-esima riga è un vettore certo!
  • Re: Matrice di stringhe

    E per passarla a una funzione scrivo:
    int funzione(char mat[][M], int n);
    int main()
    {
    ____
    condizione = funzione(matrice[N][M]);
  • Re: Matrice di stringhe

    No! Dovresti vederti i puntatori per capire bene. Comunque per passare a funzione puoi scrivere:
    condizione = funzione(matrice, N);
  • Re: Matrice di stringhe

    Grazie, ora non segna più errore. Vorrei chiederti una cosa perché mi confondo sempre.

    strcmp(s1, s2) confronta s1 con s2 e ritorna valore 0 (Vero), se sono uguali ?
Devi accedere o registrarti per scrivere nel forum
41 risposte