Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322

    [c] controllare se una stringa (char *s) è la stringa vuota

    come faccio a controllare se una stringa (inizializzizata come char *parola) è la stringa vuota?

    x quello che mi serve nel mio programma non mi basta fare un controllo del tipo:

    if (parola == " ")

    o qualcosa di simile.. perche devo controllare anche il caso che tra gli apici ci siano 0,1,2....n spazi bianchi.. quindi come posso fare un controllo generalizzato?

    avevo pensato di fare così. if ((strlen(parola) == 0)
    ma siccome parola è (necessariamente) dichiarata come *char e non come char[] mi da errore.

    che voi sappiate c'è qualche altra funzione in string.h o qualche altro metodo per fare questo controllo?


    grazie

  2. #2
    Non ho ben capito come è dichiarata questa stringa...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    156
    il concetto di "stringa vuota" in C non esiste.
    Definisci il tuo concetto di stringa vuota.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    allora... io sono dentro una funzione della quale ti riporto il prototipo: (ignora il second paramentro che è una struttura creata nel programma)

    int funzione(char *parola, lx an);

    e devo controllare, x la gestione degli errori, se parola è una stringa vuota...

    spero di essere stato piu chiaro..

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    Originariamente inviato da zucchino
    il concetto di "stringa vuota" in C non esiste.
    Definisci il tuo concetto di stringa vuota.
    diciamo che devo controllare che non sia una stringa che è fatta solo di spazi bianchi..

    lo so che puo sembrare una cosa arssurda ma il controllo mi serve.. nel senso che sono obbligato a farlo per le direttivie dell'esercizio che sto facendo..

  6. #6
    codice:
    int strspc(char * str) //restituisce 1 qualora la stringa sia di lunghezza 0 e 2 se è composta interamente da spazi o tabulazioni
    {
        size_t sl = strlen(str);
        if (!sl) return 1;
        for(int c=0; c<(int) strlen(str); c++)
            if(!isspace(str[c])) return 0;
        return 2;
    }
    //...
    int funzione(char *parola, lx an)
    {
        if(strspc(parola)) //fa quello che deve fare in caso di errore
        //...
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    scusate.. espongo il problema in modo diverso.

    io devo assciuramrmi che la stringa non sia una stringa fatta solo di spazi bianchi..

    con strlen posso controllare che non sia stringa del tipo parola=""; (stringa vuota) mettendo un controllo IF (strlen(parola) == 0) ma cosi non controllo i casi in cui dentr a parola ci sono x esa due o tre spazi bianchi e basta...

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    ti ringrazio..

    però mi da un errore quando vado a complilare. Esattamente: 'FOR' LOOP INITIAL DECLARATION USED OUTSIDE C99 MODE


    che vuol dire??

    Originariamente inviato da MItaly
    codice:
    int strspc(char * str) //restituisce 1 qualora la stringa sia di lunghezza 0 e 2 se è composta interamente da spazi o tabulazioni
    {
        size_t sl = strlen(str);
        if (!sl) return 1;
        for(int c=0; c<(int) strlen(str); c++)
            if(!isspace(str[c])) return 0;
        return 2;
    }
    //...
    int funzione(char *parola, lx an)
    {
        if(strspc(parola)) //fa quello che deve fare in caso di errore
        //...
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    invece va bene come hai scritto tu..

    non so perche ma facendo copia e incolla mi dava quell'errore.. riscrivendo a mano invece è tutto ok.. boh!


    grazie infinite cmq..

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    156
    for(int c=0; c<(int) strlen(str); c++)
    non è valido in c, è valido solo in c++
    definisci int c all'inizio della funzione

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.