|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Torino
Messaggi: 2151
|
Stdio e cambio del puntatore al file
Raga devo modificare un programmino (un compressore jpeg: Cjpeg scritto in C) e farlo girare su un processore sparc (Leon2)
La mia difficoltà è nel capire la seguente cosa: Lanciandolo da shell io gli do: cjpeg image.bmp image.jpg e porta a termine la compressione correttamente. Quando lo carico sul processore che farà solo quello non posso + scrivergli i file immagini per cui devo andare a capire come cambiare il codice e dirgli già nel file C la path dei file immagine. Io trovo stringhe del tipo: FILE * infile ossia puntatori al file riferiti a ciò che ho passato da riga di comando mentre dovrei solo dire che il file è sempre e solo quello che ho su disco. Mi aiutate per favore? E' un lavoro di tesi e mi sono bloccato qui. Spero di essere stato chiaro Vi ringrazio tanto Dario |
|
|
|
|
|
#2 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Sul Kernighan&Ritchie l'argomento file è spiegato molto bene.
Comunque, in soldoni: FILE è un tipo strutturato, che contiene informazioni relative a un file. Per gestire file su disco, si usano puntatori a FILE. Per aprire un file, cioè per associare una zona della memoria a una zona del disco, fai: Codice:
fp = fopen(nome,modo); Per leggere un file, ci sono vari metodi: fscanf, fread, fgetc. Tieni conto che un file si legge in avanti (un po' come se fosse il nastro di una cassetta). Quando hai finito di usare un file, devi chiuderlo, ossia liberare le risorse che sono servite per usarlo, così: Codice:
fclose(fp); Codice:
infile = fopen(argv[1],"r"); Per informazioni più approfondite, consulta il K&R, o la documentazione.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Torino
Messaggi: 2151
|
ciao
grazie
copio la parte relativa alla lettura/scrittura file fa i controlli sulla stringa utente da tastiera e poi punta al file....mentre io vorrei fare un'assegnazione diretta al file (dato che il mio processore non puo' fare scelte autonomamente /* Open the input file. */ if (file_index < argc) { if ((input_file = fopen(argv[file_index], READ_BINARY)) == NULL) { fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]); exit(EXIT_FAILURE); } } else { /* default input file is stdin */ input_file = read_stdin(); } /* Open the output file. */ if (outfilename != NULL) { if ((output_file = fopen(outfilename, WRITE_BINARY)) == NULL) { fprintf(stderr, "%s: can't open %s\n", progname, outfilename); exit(EXIT_FAILURE); } } else { /* default output file is stdout */ output_file = write_stdout(); } ove in un altro file sono state definite le void: GLOBAL(FILE *) read_stdin (void) { FILE * input_file = stdin; #ifdef USE_SETMODE /* need to hack file mode? */ setmode(fileno(stdin), O_BINARY); #endif #ifdef USE_FDOPEN /* need to re-open in binary mode? */ if ((input_file = fdopen(fileno(stdin), READ_BINARY)) == NULL) { fprintf(stderr, "Cannot reopen stdin\n"); exit(EXIT_FAILURE); } #endif return input_file; } GLOBAL(FILE *) write_stdout (void) { FILE * output_file = stdout; grazie mille |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2001
Città: Torino
Messaggi: 2151
|
ciao
allego il file in questione (da rinominare in .c)
come poteri rendere statica la specifica del file imamgine che invece lui legge da riga di comando? tnx http://files.bighosting.net/cc20704.txt |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:09.



















