Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema puntatori a carattere
Forum - C/C++ - problema puntatori a carattere

Avatar
alex2thebest (Normal User)
Rookie


Messaggi: 23
Iscritto: 17/05/2008

Segnala al moderatore
Postato alle 11:32
Lunedė, 07/07/2008
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:

Codice sorgente - presumibilmente C++

  1. #include <iostream.h>
  2. #include <fstream.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.       char a, y;
  9.       char* r = & a;
  10.       r = "hello world ciao";
  11.       fstream provasave;
  12.       provasave.open("C:\\provas.txt", ios::out);
  13.       provasave << r;
  14.       provasave.close();
  15.       _sleep(500);
  16.       delete r;
  17.       char* e = & y;
  18.       fstream provaload;
  19.       provaload.open("C:\\provas.txt", ios::in);
  20.       provaload >> e;
  21.       provaload.close();
  22.       cout << e << endl;
  23.       _sleep(2000);
  24.       return 0;
  25. }


PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 12:07
Lunedė, 07/07/2008
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'

Codice sorgente - presumibilmente C/C++

  1. char s[1000];
  2.       strcpy(s, "hello world ciao");
  3.       fstream provasave;
  4.       provasave.open("C:\\provas.txt", ios::out);
  5.       provasave << s;
  6.       provasave.close();
  7.       _sleep(500);
  8.      
  9.       char l[1000];
  10.       fstream provaload;
  11.       provaload.open("C:\\provas.txt", ios::in);
  12.       provaload.getline(l, 1000);
  13.       provaload.close();
  14.       cout << l << endl;
  15.       _sleep(2000);



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

#include <iostream>
#include <fstream>

PM Quote
Avatar
alex2thebest (Normal User)
Rookie


Messaggi: 23
Iscritto: 17/05/2008

Segnala al moderatore
Postato alle 13:56
Lunedė, 07/07/2008
grazie mille... credo di aver capito il tuo codice, ma vorrei farti una domanda: a che serve la funzione strcpy() ???

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 14:16
Lunedė, 07/07/2008
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.

PM Quote