Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [C] 2 domande

  1. #1

    [C] 2 domande

    1) Lo scanf può prendere solo una "parola" ? Se metto uno spazio mi prende solo la prima parola e poi fa casino con le funzioni successive.

    ora al posto dello scanf uso:
    codice:
    	   for( i = 0; (i < 1000) &&  ((ch = getchar()) != '\n') ; i++ )
    	   mess[i] = (char)ch;
    	   mess[i] = '\0';
    non c è un metodo più "veloce" ?

    2) Come faccio a far "eseguire un comando" alla pressione di un dato tasto?

    usando getchar() mi chiede comunque di premere enter io vorrei che il comando venisse eseguito alla pressione del tasto voluto, non dopo aver premuto enter

  2. #2

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Per il primo problema:


    char mess[256];
    fgets (mess , 256 , stdin);


    la fgets legge in questo modo al più i primi 255 caratteri (più il carattere di fine stringa) che l'utente ha scritto sulla console, e li inserisce nell'array mess; se l'utente ne ha messi di meno legge solo quelli effettivamente inseriti; 255 è solo il numero massimo di caratteri da leggere nel caso in cui l'utente ne abbia inseriti di piu.


    Leggiti e studiati la libreira del C:

    http://www.cplusplus.com/ref/

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4
    Originariamente inviato da anx721
    Per il primo problema:


    char mess[256];
    fgets (mess , 256 , stdin);


    la fgets legge in questo modo al più i primi 255 caratteri (più il carattere di fine stringa) che l'utente ha scritto sulla console, e li inserisce nell'array mess; se l'utente ne ha messi di meno legge solo quelli effettivamente inseriti; 255 è solo il numero massimo di caratteri da leggere nel caso in cui l'utente ne abbia inseriti di piu.


    Leggiti e studiati la libreira del C:

    http://www.cplusplus.com/ref/
    già provato fgets... ma mi fa casini

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da SwisströM
    già provato fgets... ma mi fa casini
    evidentemente la usi male

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6
    Originariamente inviato da anx721
    evidentemente la usi male



    io ho copiato quella scritta da te...

    solo che: mettendo solo fgets non mi si ferma il cursore e quindi non posos inserire nesusn dato $

    allora ho messo un getchar(); prima e sembra funzionare, solo che il messaggio che viene creto poi sul COmputer remoto risulta andare a capo (cosa che con scanf non succede e che non DEVE succedere)

  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    prova ad usare la gets

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  8. #8
    Originariamente inviato da anx721
    prova ad usare la gets
    ma la gets() invece potrebbe causare il problema al contrario, nel senso che non è in grado di fermarsi nel ricevere l'input, rispettando la dimensione del buffer. E' una funzione a rischio buffer overflow.

    La fgets() dovrebbe essere la funzione che risolve.

  9. #9
    Originariamente inviato da RaouL_BennetH
    ma la gets() invece potrebbe causare il problema al contrario, nel senso che non è in grado di fermarsi nel ricevere l'input, rispettando la dimensione del buffer. E' una funzione a rischio buffer overflow.

    La fgets() dovrebbe essere la funzione che risolve.
    si la gets infatti è a rischio overflow... la fgets non so perhc ema mi manda a capo ... la finestra del "net send"

  10. #10
    Originariamente inviato da SwisströM
    si la gets infatti è a rischio overflow... la fgets non so perhc ema mi manda a capo ... la finestra del "net send"
    Non so il tipo di dato che devi prendere come lo hai inizializzato, quindi, quello che dico potrebbe essere che tu l'abbia già fatto:

    hai provato ad usare un array invece di una variabile?

    es.: char dato[20];

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.