Andrea10 (Normal User)
Newbie
Messaggi: 8
Iscritto: 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++ |
#include <stdio.h> #include <stdlib.h> #include <string.h> char *path, *ptr=NULL, barra[1]; int s,i; FILE *fp; main(){ path=getcwd(ptr,s); //Ottengo la path del programma barra[0]=path[2]; //copio la barra in una variabile strcat(path,barra); //aggiungo la barra alla path strcat(path,"Immagine.jpg"); //aggiungo il nome dell'immagine jpg fp=fopen(path,"rb"); //Apertura in lettura, Ma da ERRORE. /*.... ...... ......*/ fclose (fp); }
|
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 |
|
Alex (Ex-Member)
Expert
Messaggi: 441
Iscritto: 15/08/2005
|
se non posti il codice come facciamo ad aiutarti?
|
|
Andrea10 (Normal User)
Newbie
Messaggi: 8
Iscritto: 11/10/2011
|
Ecco il codice, scusa ero di fretta e l'ho dimenticato!
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6404
Iscritto: 03/01/2010
|
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à. |
|
Andrea10 (Normal User)
Newbie
Messaggi: 8
Iscritto: 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.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6404
Iscritto: 03/01/2010
|
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à. |
|
Andrea10 (Normal User)
Newbie
Messaggi: 8
Iscritto: 11/10/2011
|
No..volevo dire che non ho capito quale sia l'errore.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6404
Iscritto: 03/01/2010
|
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à. |
|
Umberto (Member)
Pro
Messaggi: 156
Iscritto: 27/09/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.
|
|