Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [C] Controllo lunghezza stringa ...

    Altro giro altro regalo ...


    E' possibile controllare la lunghezza di una stringa?

    esempio:

    codice:
      for(;i < strlen(str);i++)
                  {
                  if(str[i] != ' ')
                  ok = 1;
                  }
    STR è la mia stringa inserita ...

    In questo ciclo controllo che il primo carattere della mia stringa non sia uno spazio ...

    Posso verificare anche se la mia stringa è più lunga di un determinato numero di caratteri?

    GRAZIE a TUTTI

    CIAO

  2. #2
    Ho provato così:

    codice:
    if((str[i] != ' ')&&(i <= 200));
    ma non funge ...

  3. #3

    Re: [C] Controllo lunghezza stringa ...

    Originariamente inviato da visualnic
    Altro giro altro regalo ...


    E' possibile controllare la lunghezza di una stringa?

    esempio:

    codice:
      for(;i < strlen(str);i++)
                  {
                  if(str[i] != ' ')
                  ok = 1;
                  }
    STR è la mia stringa inserita ...

    In questo ciclo controllo che il primo carattere della mia stringa non sia uno spazio ...

    Posso verificare anche se la mia stringa è più lunga di un determinato numero di caratteri?

    GRAZIE a TUTTI

    CIAO
    Per controllare la lunghezza di una stringa puoi utilizzare la funzione strlen() della libreria string.h oppure una cosa del genere
    codice:
    int lunghezza_stringa(char *stringa){
    int lung=0;
    while (stringa[i]!=NULL) lung++;
    return lung;
    }
    Per il resto cosa vuoi fare??non è molto chiato...

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  4. #4
    Io devo validare un imput che sarebbe la mia stringa STR ...

    la ricevo con GETS(STR)

    poi se la mia stringa è composta solo da spazi vuoti RIPETO IL GETS

    E se è più lunga di 254 caratteri RIPETO IL GETS

    Ho questo problema perchè quando dichiaro la mia variabile

    char str[255]

    e quando la ricevo

    gets(str)

    se inserisco una stringa piu lunga di tale valore mi da un sacco di errori

    ....


    per il problema degli spazi ho risolto così:

    codice:
     while(! ok)
             {
             printf ("INSERISCI IL TERMINE DA CERCARE:");
             gets(str);
             strlwr(str);      /* Trasforma la stringa in Minuscola */
    
             int i = 0;
             //Se la stringa contiene qlcosa diverso da uno
             //spazio ok = true
             for(;i < strlen(str);i++)
                  {
                  if(str[i] != ' ')
                  ok = 1;
                  }
             if (! ok)
             printf ("Devi inserire qualcosa da cercare\n");
             }
    Ma per la lunghezza non riesco ...

    ACCETTO CONSIGLI

    GRAZIE CIAO

  5. #5
    Così va quasi bene ma mi da problemi, tipo parole sconnesse ...





    codice:
     while(! ok)
            { printf ("INSERISCI IL TERMINE DA CERCARE:");
             gets(str);
             strlwr(str);
             int i = 0;
             //Se la stringa contiene qlcosa diverso da uno
             //spazio ok = true
            
             int len;
             len = strlen(str);
              if (254 >= len)
                  
                   {
                  /* Trasforma la stringa in Minuscola */
              for(;i < strlen(str);i++)
                  {
                  if(str[i] != ' ')
                  ok = 1;
                  }
                  
                  }
                  
             if (! ok)
             printf ("La stringa inserita non può contenere più di 254 caratteri\n");
             }

    Se qualcuno riesce a dargli un'occhiata mi fa un grandissimo piacere

    grazie ciao

  6. #6
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Io ti consiglierei di utilizzare la fgets anziche' la gtes, la quale dovrebbe fare bufferizzazione (Credo) ed inoltre ti permette di specificare il numero massimo di caratteri che sei disposto a leggere. Potresti fare:
    codice:
    ...
    #define MAXLENGTH 260
    ...
    char * str;
    if ((str = fgets(STDIN, str, MAXLENGTH)) == NULL)
    {
         perror("Error on fgets");
          exit(-1);
    }
    ...
    if (strlen(str) > 255)
    /*Un carattere, '\0', viene aggiunto dalla fgets alla fine dell'input*/
    {
    /*Chiedi reimmissione di una stringa*/
    }
    else/*...*/
    ...
    Questa e' la descrizione della fgets:

    char *fgets(char *s, int size, FILE *stream);

    _fgets() reads in at most one less than size characters from
    stream and stores them into the buffer pointed to by s.
    Reading stops after an EOF or a newline. If a newline is
    read, it is stored into the buffer. A '\0' is stored after the
    last character in the buffer.

    _fgets() reads in at most one less than size characters from
    stream and stores them into the buffer pointed to by s.
    Reading stops after an EOF or a newline. If a newline is read,
    it is stored into the buffer. A '\0' is stored after the last character
    in the buffer.

  7. #7
    codice:
    #include <stdio.h>
    #include <string.h>
    
    char str[255];
    int i=0,ok=0;
    
    main() {
    
    	//prendo in input la stringa
    	lbl:	
    	gets(str);
    	//faccio il controllo degli spazi
    	for(;i<(int)strlen(str);i++) 
    		if(str[i]!=' ')
    			ok=1;
    	if(!ok) goto lbl;  //se la stringa è composta da soli spazi richiedila in input
    	if(strlen(str)>255) goto lbl;  //se la stringa è più lunga di 255 richiedila in input 
    
    }
    Questo dovrebbe andarti bene... per richiedere la stringa ho usato le etichette.. cmq va benissimo anche il ciclo do while... ciao ciao
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  8. #8
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Magari sarebbe pure meglio fare un 'break' appena trovi un carattere diverso dallo spazio oppure porre un'altra condizione. Altrimenti ogni volta devi controllare tutti i caratteri indipendentemente dal fatto che la stringa sia tutta spazi o no.

    codice:
    ...
    int found = 0;
    int i = 0;
    while ((i < strlen(str)) && (found ==0))
    {
       if (str[i] != ' ')
         found = 1;
    }
    ...

  9. #9

    errorino ...

    Ho provato in questo modo ...

    codice:
    lbl: 
             {
             int i = 0;
             int ok = 0;
            
             printf ("INSERISCI IL TERMINE DA CERCARE:");
             gets(str);
             strlwr(str);  /* Trasforma la stringa in Minuscola */
             //Se la stringa contiene qlcosa diverso da uno
             //spazio ok = true
             for(;i < strlen(str);i++)
                  {
                  if(str[i] != ' ')
                  ok = 1;
                  }
             if (! ok) 
                  {
                  printf ("Non puoi inserire solo spazi ... inserisci una parola da cercare\n");
                  goto lbl;
                  }
             if(strlen(str)>255) 
                  {
                  printf ("La stringa di ricerca non puo' essere piu' lunga di 254 caratteri\n");
                  goto lbl;
                  }
             }

    va bene!!!

    ma ho un problemino quando inserisco una stringa lunga più di 254 caratteri mi ripete il GETS ma mi da problemi ....

    errore irreversibile ....

    Come posso resettare una variabile CHAR?

    Nel senso quando inserisco una stringa in STR se è troppo lunga la reiserisco ma prima di inserirla voglio resettare quella che ho appena inserito che era troppo lunga ...

    per esempio

    int i = 0;

    porto la variabile i a 0 ...

    Char str[255];

    come posso svuotare la variabile?

    Grazie Ciao

  10. #10
    ho provato con vari tentativi ...

    non è un problma di svuotamento variabile

    Non riesco a capire nel primo caso di goto va bene anche se ripeto due o tre volte l'inserimento

    Se percaso inserisco una stringa di lunghezza maggiore di 254 caratteri:

    mi dice la stringa inserita è troppo lunga ripeti l'inserimento ...

    io ripeto l'inserimento ...


    poi si imballa ...


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.