Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Vettore di stringhe

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2015
    residenza
    Italia
    Messaggi
    23

    Vettore di stringhe

    Salve a tutti ,
    sono alle prese con un argomento per me nuovo ovvero un vettore di stringhe nonché' una matrice. E' da un po che cerco di risolvere questo esercizio:

    "Scrivere una funzione in C che dato un vettore di stringhe, dichiarato char* vett[10] e inizializzato con 10 stringhe, stampi a video la stringa di lunghezza massima."

    L'inizializzazione sono riuscita a farla ma non sono riuscita ad arrivare al vero compito richiesto. Potreste darmi una mano?

    L'inizializzazione l'ho eseguita nel seguente modo:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define  K 50
    
    
    int main(){
    char vett[K][10];
    char s[K];
    int N=0;
    int end=0;
    
    
    do {
    printf("Stringa %d: ", N+1) ;
    gets(s) ;
     if (strlen(s)==0)
      printf("Vuota la stringa e' vuota ripeti:\n");
     else
        if(strlen(s)>10)
         printf("La stringa e' troppo lunga!\n") ;
         else
          if (strcmp(s, "FINE\n")==0)
           end = 1;
         else{
         strcpy(vett[N], s);
         N++;
         }
     } while(end==0);
     printf("FINE");
    
    
    system("pause");
    return 0;
    }

  2. #2
    Attenzione a non sforare i limiti con le stringhe, bisogna sempre prevedere il terminatore '\0', e controllare di non assegnare più stringhe di quante ne siano allocate.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAXSTRLENGTH 10
    #define MAXSTRNUMBER 10
    
    int main()
    {
        char vett[MAXSTRNUMBER][MAXSTRLENGTH+1];
        char str[2048];
        int count=0;
        int end=0;
        int i, len;
        do
        {
            printf("Stringa %d: ", count+1) ;
            gets(str) ;
            len = strlen(str);
            if( len==0 )
                printf("La stringa e' vuota ripeti:\n");
            else if( len>MAXSTRLENGTH )
                printf("La stringa e' troppo lunga!\n") ;
            else if (strcmpi(str, "fine")==0)
                end = 1;
            else
            {
                strcpy( vett[count], str );
                count++;
                if( count == MAXSTRNUMBER )
                    end = 1;
            }
        }
        while(end==0);
        
        for( i=0; i<MAXSTRNUMBER; i++)
            printf("%d) \"%s\"\n", i, vett[i] );
        
        printf("\nFine");
        getchar();
        return 0;
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2015
    residenza
    Italia
    Messaggi
    23
    Si giusto!

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