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: 5714
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 ...
---
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
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: 5714
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 ...
---
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
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: 5714
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 ...
---
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
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