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++ - [C]Errore apertura file .jpg
Forum - C/C++ - [C]Errore apertura file .jpg

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Andrea10 (Normal User)
Newbie


Messaggi: 8
Iscritto: 11/10/2011

Segnala al moderatore
Postato alle 17:14
Martedì, 11/10/2011
Salve,

sto realizzando un programma che apre un file .jpg, tramite l' fopen e copia in una stringa il contenuto.
Ho trovato la path della mia immagine che si trova nella stessa cartella dell'eseguibile, e faccio l' fopen del file .jpg in sola lettura.
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char *path, *ptr=NULL, barra[1];
  6. int s,i;
  7. FILE *fp;
  8.  
  9. main(){    
  10.            
  11. path=getcwd(ptr,s); //Ottengo la path del programma
  12. barra[0]=path[2]; //copio la barra in una variabile
  13. strcat(path,barra); //aggiungo la barra alla path
  14. strcat(path,"Immagine.jpg"); //aggiungo il nome dell'immagine jpg
  15.  
  16. fp=fopen(path,"rb"); //Apertura in lettura, Ma da ERRORE.
  17. /*....
  18. ......
  19. ......*/
  20.  
  21. fclose (fp);
  22. }


Il programma si avvia e poi durante la fase di apertura del file la console da l'errore:
*Il programma ha smesso di funzionare.*

Qualcuno mi può aiutare?
Sto lavorando con win7 e utilizzo Dev-C++ .

Grazie Mille in anticipo

Ultima modifica effettuata da Andrea10 il 11/10/2011 alle 17:50
PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 17:17
Martedì, 11/10/2011
se non posti il codice come facciamo ad aiutarti?:_doubt::_doubt::_doubt:


Alex=)
PM Quote
Avatar
Andrea10 (Normal User)
Newbie


Messaggi: 8
Iscritto: 11/10/2011

Segnala al moderatore
Postato alle 17:25
Martedì, 11/10/2011
Ecco il codice, scusa ero di fretta e l'ho dimenticato! :)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:49
Martedì, 11/10/2011
E' come dire al meccanico mi aggiusti l'auto e dimenticare di dargli l'auto dicendo che si andava di fretta ... :-)

Comunque, il problema è che usi il puntatore

char *path;

senza avere allocato la memoria per contenere la stringa e usi getcwd passando un parametro (s) senza valorizzarlo ...

Ripassa il funzionamento della getcwd e come si usa ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Andrea10 (Normal User)
Newbie


Messaggi: 8
Iscritto: 11/10/2011

Segnala al moderatore
Postato alle 18:11
Martedì, 11/10/2011
Quella parte di codice l'ho presa da un sito,
ho provato a fare una printf della path e la stampa corretta.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:33
Martedì, 11/10/2011
Testo quotato

Postato originariamente da Andrea10:

Quella parte di codice l'ho presa da un sito,
ho provato a fare una printf della path e la stampa corretta.



Quindi vuoi dire che ti ho detto una sciocchezza?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Andrea10 (Normal User)
Newbie


Messaggi: 8
Iscritto: 11/10/2011

Segnala al moderatore
Postato alle 21:45
Martedì, 11/10/2011
No..volevo dire che non ho capito quale sia l'errore.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:55
Martedì, 11/10/2011
Ti ho già detto ...

Guarda meglio come funziona la getcwd perché

usi ptr che non è allocato

usi s senza dare un valore

Ma tu hai detto che hai trovato il codice in un sito e dato che funziona è giusto ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Umberto (Member)
Pro


Messaggi: 156
Iscritto: 27/09/2011

Segnala al moderatore
Postato alle 21:58
Martedì, 11/10/2011
Scusatemi se mi intrometto , ma mi hanno insegnato che non conviene fare in c programmi ad alto lv.
potresti aprila con un comando system usando quindi il programma predefinito del sistema.


PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo