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

    [C] lettura da input di parametri opzionali

    Sto facnedo una piccola consolle che fa parte di un progetto per l'università... e ho questo problema:

    alcuni comandi che do alla console ppossono avere dei parametri, altri no....

    esiste un metodo universale per leggere tutta la stringa inserita dall'utente e regolarmi poi di conseguenza, piuttosto che fare più scanf?

    mi spiego:

    io al momento faccio una scanf("%s",input)... dopo di che.. se input non accetta parametri, va bene così... se input accetta parametri procedo cn altre scanf e solo a quel punto possso dare errore se non ci sono... invece vorrei poter leggere tutto in input, esplodere la stringa di input sugli spazi e verificare subito se mancanoi parametri, senz alasciare il promt in attesa dei parametri, ma danjdo subito errore.

    in pratica la scanf dovrebbe leggere tutto fino all'invio, non solo fino al primo spazio... è possibile?


  2. #2
    Certo puoi usare la gets (sta get string). Occhio che a fine stringa ti mette un '\n' tienine conto.Leggiti la doc in proposito ovviamente.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Originariamente inviato da unomichisiada
    Certo puoi usare la gets (sta get string). Occhio che a fine stringa ti mette un '\n' tienine conto.Leggiti la doc in proposito ovviamente.
    ecco!

    mi ricordavo che c'era un modo ma non ricordavo la gets... però se ricordo bene (il c lo uso giusto ogni tanto per l'uni ) aveva qualche controindicazione... o sbaglio?

    Vabbè.. intanto grazie


  4. #4
    Originariamente inviato da }gu|do[z]{®©
    ecco!

    mi ricordavo che c'era un modo ma non ricordavo la gets... però se ricordo bene (il c lo uso giusto ogni tanto per l'uni ) aveva qualche controindicazione... o sbaglio?

    Vabbè.. intanto grazie

    Sinceramenet non me ne risultano, ma se ne trovi facecle sapere.Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    ad ogni modo ho anche trovato, qui sul forum, un thread in cui si usavano le regexp al posto della sringa di formato.... per cui potrei anche fare:

    scanf("%[a-zA-Z ]",input)

    proverò domani.. ma penso funzioni.

    Così, per completezza

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da unomichisiada
    Sinceramenet non me ne risultano, ma se ne trovi facecle sapere.Ciao
    La gets è una tra le piu' "pericolose" funzioni per quanto riguarda il rischio di buffer overflow.

    Non è consigliabile usarla (per scopi che non siano didattici) e, anzi, molti compilatori ne sconsigliano l'uso esplicitamente tramite dei warning.

  7. #7
    Originariamente inviato da oregon
    La gets è una tra le piu' "pericolose" funzioni per quanto riguarda il rischio di buffer overflow.

    Non è consigliabile usarla (per scopi che non siano didattici) e, anzi, molti compilatori ne sconsigliano l'uso esplicitamente tramite dei warning.
    Ok questo non lo sapevo.Tu cosa consigli? Una scanf con opportuno parametro di formattazione?
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' meglio usare la

    scanf

    a patto utilizzare lo specificatore di lunghezza.

    Cioe' non utilizzare mai "%s" ma indicare la lunghezza massima della stringa accettata (ad esempio "%30s").

    Oppure, meglio, usare la

    fgets

  9. #9
    hem.. mi sapete dire perchè questo....

    codice:
    do{
       scanf("%[a-zA-Z ]",input);
    
       ....bla bla bla a seconda di cosa è input
    
    } while(1);
    dopo che invio una stringa mi cicla all'infinito senza riinterrompersi sulla scanf come accade mettendo semplicemente scanf("%s",input)... ???

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... il ciclo è infinito. Se non mostri come esci da tale ciclo, è giusto che cicli ...

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.