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↕[A↕S↕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↕[A↕FZW↕T[@AF↕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


"Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C." (Robert Firth)
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



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare un'esperienza; tutto il resto solo informazione.
L'immaginazione pi importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote