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++ - Scrivere file
Forum - C/C++ - Scrivere file

Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 14:00
Sabato, 13/02/2010
Ho un problema con un programma che sto scrivendo dovrei fare in modo che quando una stringa superi un tot di carratteri la scriva su un file , io ho provato in questo modo ma non ho avuto successo:

Codice sorgente - presumibilmente C/C++

  1. string rec;
  2. const char *conv;
  3. #define max_char 1000
  4. for(;;)
  5. {
  6. while(true)
  7. {
  8.   ..... Vengono Immessi i dati nelle stringhe
  9.                         conv=rec.c_str();
  10.                         if(strlen(conv) == max_char)
  11.                         {
  12.                         break;
  13.                         }
  14. }
  15. ofstream write("mio.txt", ios::app);
  16. write<<conv;
  17. write.close();
  18. rec="";
  19.               //prima di riprendere il ciclo devo svuotare le stringhe
  20. conv=0;
  21. continue;
  22. }



risultato ... sembra che il ciclo while poi non riprende ... e se la stringa era ciao come stai mi ritrovo scritto cia e basta ....
come posso fare?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:38
Sabato, 13/02/2010
Se usi una

string

del C++, allora non ha senso trasformarla in stringa del C per ottenerne la lunghezza.

Il controllo va fatto per valori >= al massimo e il ciclo può essere uno solo ...

Codice sorgente - presumibilmente C/C++

  1. string rec;
  2.  
  3.     while(true)
  4.     {
  5.         // input dati
  6.  
  7.         if(rec.length() >= max_char)
  8.         {
  9.             ofstream write("mio.txt", ios::app);
  10.             write << rec;
  11.             write.close();
  12.  
  13.             rec = "";
  14.         }
  15.     }
  16. }



P.S. E' il solito keylogger ... ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 951
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 14:46
Sabato, 13/02/2010
Ciao!

Non capisco come mai usi due cicli infiniti.
Comunque ti consiglio di utilizzare la funzione flush() per ottenere forzatamente la secrittura dei dati su disco.

Per maggiori chiarimenti: http://www.cplusplus.com/reference/iostream/ostream/flush/


Ultima modifica effettuata da Poggi Marco il 13/02/2010 alle 15:00


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 23:23
Lunedì, 15/02/2010
Grazie 1000 ora funziona...
Il doppio ciclo infinito niente è un errore mio pensavo di dover fare una cosa che poi ho tolto e non serviva:rotfl::rotfl:
Cmq si e un semplice keylogger ho imparato a vedere che tasti vengono premuti e ho voluto provare.:D

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 2:25
Martedì, 16/02/2010
Testo quotato

Postato originariamente da jaco94++:

Grazie 1000 ora funziona...
Il doppio ciclo infinito niente è un errore mio pensavo di dover fare una cosa che poi ho tolto e non serviva:rotfl::rotfl:
Cmq si e un semplice keylogger ho imparato a vedere che tasti vengono premuti e ho voluto provare.:D



cvd


Ingegnere Informatico
https://ldlagency.it
PM Quote