Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Matrice di stringhe

    Salve. Sono mezzo programmatore ma stavolta proprio non mi viene in mente perché non riesca a farlo funzionare....


    Devo realizzare una matrice Nx3 di stringhe (non posso utilizzare classi o strutture) ma non mi riesce di cavarci un ragnetto dal buco! Il codice è questo (circa):
    codice:
    #define N 10;
    ...
    ...
    char *M[N][3];
    int i;
    ...
    ...
    for (i=0;i<N;i++)
    {
      printf("campo 1:" );
      scanf("%s",&M[i][0]);
      printf("campo 2:" );
      scanf("%s",&M[i][1]);
      printf("campo 3:" );
      scanf("%s",&M[i][2]);
    }
    
    for (i=0;i<N;i++)
    {
      printf("CAMPO 1: %s\n", M[i][1]);
      printf("CAMPO 2: %s\n", M[i][2]);
      printf("CAMPO 3: %s\n", M[i][3]);
    }
    ...
    Il compilatore compila, ma quando arriva a stampare a video la matrice si inchioda. Se al posto di %s metto %d allora stampa (dei numeri ovviamente, ma non si inchioda).

    A voi l'ardua sentenza
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    prima di fare la scanf devi allocare lo spazio per la stringa:

    M[i][0] = (char *)malloc(30 * sizeof(char));

    se lel stringhe sono al più lunghe 29 caratteri


    inoltre la scanf va fatta cosi:

    scanf("%s",M[i][0]);

    senza la & perchè M[i][0] è già un puntatore a carattere.

    poi dal modo in cui hai mpostatato il programma mi vie da pensare che non ti serve una matrice di stringhe ma un array di 3 stringhe, è cosi?

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Speravo di fare senza malloc, il programma serve da esempio per una ragazza cui faccio ripetizioni e non ha ancora fatto molto di C/C++. Pazienza.

    In merito alla tua domanda, no, mi serve proprio una matrice Nx3, ove allocare una serie di record composti di 3 campi... so che si fa meglio con le strutture (classi) ma non ha mai visto nulla di simile e volevo vedere se si poteva fare senza troppe complicazioni.

    Grazie lo stesso
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

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.