Oppure

Loading
07/07/08 9:32
alex2thebest
Ho un piccolo problema con i puntatori a carattere (credo), ho creato un piccolo programmino per esercitarmi a usare la libreria fstream e ho usato i puntatori a carattere.... ma ho un problema, il programma per funzionare correttamente dovrebbe scrivermi "hello world ciao", il programma scrive questa frase in un file e poi la legge... La frase viene salvata correttamente nel file di testo ma quando viene letta... viene letta solo la prima parola!!! penso che il problema riguardi i puntatori a carattere comunque ecco il programma:

#include <iostream.h>
#include <fstream.h>

using namespace std;

int main()
{
      char a, y;
      char* r = & a;
      r = "hello world ciao";
      fstream provasave;
      provasave.open("C:\provas.txt", ios::out);
      provasave << r;
      provasave.close();
      _sleep(500);
      delete r;
      char* e = & y;
      fstream provaload;
      provaload.open("C:\provas.txt", ios::in);
      provaload >> e;
      provaload.close();
      cout << e << endl;
      _sleep(2000);
      return 0;
}
aaa
07/07/08 10:07
gantonio
Sì ... decisamente hai ancora problemi con i puntatori e le stringhe null terminated. Ma non disperare ... molti programmatori "sbattono la testa" su queste nozioni per tanto tempo (e molti non le hanno ancora capite) ...

Per far funzionare il tuo codice, modificalo cosi'

      char s[1000];
      strcpy(s, "hello world ciao"); 
      fstream provasave; 
      provasave.open("C:\provas.txt", ios::out); 
      provasave << s; 
      provasave.close(); 
      _sleep(500); 
      
      char l[1000];
      fstream provaload; 
      provaload.open("C:\provas.txt", ios::in); 
      provaload.getline(l, 1000);
      provaload.close(); 
      cout << l << endl; 
      _sleep(2000); 


Inoltre, in C++ gli include che hai usato si inseriscono senza il .h. Quindi

#include <iostream>
#include <fstream>
aaa
07/07/08 11:56
alex2thebest
grazie mille... credo di aver capito il tuo codice, ma vorrei farti una domanda: a che serve la funzione strcpy() ???
aaa
07/07/08 12:16
gantonio
La strcpy (string copy) serve a copiare una stringa all'interno di un'altra ...

Nel tuo caso, la stringa da copiare e' quella costante tra virgolette che viene copiata nell'array di char.
aaa