Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Errore nel gets()
Forum - C/C++ - Errore nel gets()

Avatar
redlion (Normal User)
Newbie


Messaggi: 10
Iscritto: 11/09/2006

Segnala al moderatore
Postato alle 16:21
Venerdì, 05/01/2007
Eccomi di nuovo...
Visto che l'ultimo programma che stavo tentando di scrivere è in un momento di stallo... sono andato a ricontrollare un vecchio codificatore per XOR che avevo fatto tempo fa.
Questa è la parte fondamentale del programma:
Codice sorgente - presumibilmente C#

  1. char frase_in[1000], frase_out[1000];
  2. int key;
  3.  
  4. // Code string
  5. void codifica(char *frase) {
  6.      for (int j = 0; j <= strlen(frase); j++) {
  7.         frase_out[j] = frase[j] ^ key;
  8.         if (frase_out[j]) cout << frase_out[j];
  9.      }
  10.          
  11. }  
  12.  
  13. void choice() {
  14.     cout << "\n-[====================================================================]-";
  15.     cout << "\nInserisci la frase da codificare:\n Frase) ";
  16.     gets(frase_in);
  17.     cout << "\nSeleziona la chiave di cifratura numerica.\n Chiave) ";
  18.     cin >> key;
  19.     cout << "\nFrase (De)codificata in chiave " << key << ":\n Frase (De)codificata) ";
  20.     codifica(frase_in);
  21. }


E questo funziona egregiamente la prima volta.
Questo è l'output:
Codice sorgente - presumibilmente C/C++

  1. -[====================================================================]-
  2. Inserisci la frase da codificare:
  3.  Frase) This is a test
  4.  
  5. Seleziona la chiave di cifratura numerica.
  6.  Chiave) 50
  7.  
  8. Frase (De)codificata in chiave 50:
  9.  Frase (De)codificata) fZ[A&#8597;[A&#8597;S&#8597;FWAF2


E tutto ok.
Se però provo a rieseguire la funzione choice(), per continuare ad inserire stringhe da codificare...
Questo è quello che succede:
Codice sorgente - presumibilmente C#

  1. -[====================================================================]-
  2. Inserisci la frase da codificare:
  3.  Frase) This is the first try
  4.  
  5. Seleziona la chiave di cifratura numerica.
  6.  Chiave) 50
  7.  
  8. Frase (De)codificata in chiave 50:
  9.  Frase (De)codificata) fZ[A&#8597;[A&#8597;FZW&#8597;T[@AF&#8597;F@K2
  10.  
  11. -[=========================================================================]-
  12. Inserisci la frase da codificare:
  13.  Frase)
  14. Seleziona la chiave di cifratura numerica.
  15.  Chiave) 50
  16.  
  17. Frase (De)codificata in chiave 50:
  18.  Frase (De)codificata) 2
  19. -[====================================================================]-


Praticamente non mi permette di inserire la frase_in, passando direttamente all'input della Chiave...
Pensavo in qualke particolarità del gets(), però non trovo un modo di sistemare il tutto...
Ho provato a trasformare il tutto utilizzando stringhe, ma sarebbe meglio lasciare gli array di char...
Qualke consiglio?

Ultima modifica effettuata da redlion il 05/01/2007 alle 16:22
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:51
Domenica, 07/01/2007
prova a dare un

fflush( stdin );

Codice sorgente - presumibilmente C/C++

  1. void choice() {
  2.  // ...
  3.  cout << "\nInserisci la frase da codificare:\n Frase) ";
  4.  gets(frase_in);
  5.  cout << "\nSeleziona la chiave di cifratura numerica.\n Chiave) ";
  6.  cin >> key;
  7.  cout << "\nFrase (De)codificata in chiave " << key << ":\n Frase (De)codificata) ";
  8.  codifica(frase_in);
  9.  [b]fflush( stdin );[/b]
  10. }



Ultima modifica effettuata da netarrow il 07/01/2007 alle 16:54
PM Quote