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: 5714
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 ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 967
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: 2765
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