|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2001
Città: Torino
Messaggi: 2151
|
Chi mi da una mano con questo programmino in C?
Ciao raga allora devo leggere da file una struttura fatta in questo modo:
P2 23 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 la seconda riga mi da righe e colonne (da tenere in 2 variabili) poi devo creare un arrai bidimensionale dove salvare questa matrice (di dimensione variabile a seconda dei valori in seconda riga). Il tutto dovrei salvarlo su un nuovo file. Non programmo da una vita...sono un pokino arrugginito...mi aiutate? grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2001
Città: Torino
Messaggi: 2151
|
up
raga è davvero importante grazie
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2001
Città: Trento
Messaggi: 7095
|
e' un'immagine PPM?
__________________
MyPC: A7A266 - Thoro1800+@2000+ - SK6 - 512DDR - FX5200 128MB - SBLive!1024 - MAXTOR120GB - Liteon LTR52327S LDW-451S HTPC: Case uATX QTec - GA 7VM400M - Duron1600 - ALX800 - 256DDR - Radeon7000 - LiteOn166 - Pow by GeexBox 0.98.5 Utenti con cui ho trattato |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Mar 2001
Città: Torino
Messaggi: 2151
|
si!
bravo!
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2001
Città: Trento
Messaggi: 7095
|
per creare un array bidimensionale di dimensione dimxx dimy fai cosi':
Codice:
char **matrix; matrix = new char*[dimx]; for (int i=0; i < dimx; i++) matrix[i] = new char[dimy];
__________________
MyPC: A7A266 - Thoro1800+@2000+ - SK6 - 512DDR - FX5200 128MB - SBLive!1024 - MAXTOR120GB - Liteon LTR52327S LDW-451S HTPC: Case uATX QTec - GA 7VM400M - Duron1600 - ALX800 - 256DDR - Radeon7000 - LiteOn166 - Pow by GeexBox 0.98.5 Utenti con cui ho trattato |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
be dovresti prima leggere la seconda riga per crearti la matrice con una malloc e poi leggi tutte le altre rigole dividendo gli elementi prendendo per riferimento gli spazi bianchi e carichi i valori nella matrice con una semplice atoi().
Ciao. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Mar 2001
Città: Torino
Messaggi: 2151
|
raga
ok è quello che sto realizzando...mi serve la malloc....
ora vedo se funziona....il problema è un'altro adesso mi sapete dire come procedere nel voler inserire tale matrice che ho realizzato e caricato in un header esterno? la mia esigenza è quella di evitare assolutamente tutte le forme di fopen e fwrite (perchè questo programma lo deve eseguire un processore che sto studiando per la tesi che non può scrivere su disco) quindi devo per così dire "inglobare" la mia immagine iniziale nel codice. Una volta che ho la mia immagine nella matrice[righe][colonne] devo quindi realizzare la parte .h e poi dare un #include <mioheader.h> così che quando il programma principale chiama una fopen io posso puntare direttamente alla mia matrice evitando quindi lettore da disco..... spero di essermi spiegato.... come potrei procedere nello scrivere il .h e cos'altro mi serva? grazie mille! Dario |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Be puoi crearti una stringa del tipo:
Codice:
char * file="P2\r\n23 7 \r\n15 \r\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r\n 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 "; in questo modo quandi richiami la funzione di lettura del file non accedi al disco ma all'area di memoria |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Mar 2001
Città: Torino
Messaggi: 2151
|
io
ho fatto questo
#include <stdio.h> #include <string.h> char inputfile, outputfile; int main() { FILE * pFile; printf("Inserire il file immagine sorgente ppm o pgm"); scanf("%s",&inputfile); pFile = fopen ("inputfile","r"); char string1 [100]; //leggo la prima riga fgets (string1 , 100 , pFile); //leggo numero di righe e colonne int rows, cols; fscanf(pFile,"%d%d", &rows, &cols); char string2 [100]; //leggo la terzariga fgets (string2 , 100 , pFile); int i = 0, j = 0; //alloco la matrice int **matrix = (int **)malloc(rows); for(i = 0; i < rows; i++) matrix[i] = (int *)malloc(cols * sizeof(int)); //leggo la matrice for(i = 0; i < rows; i++) for(j = 0; j < cols; j++) fscanf(pFile,"%d", &(matrix[i][j])); fclose(pFile); return 0; } la compilazione va in fondo senza errori gli do come parametri un file.dat (dove ho copiato quella struttura elementi) ma non so perchè crasha....sto usando dev-c++ sotto xp inoltre potresti spiegarmi bene in dettaglio quello che hai scritto prima? grazie mille |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
l'errore che hai commesso è al :
Codice:
int **matrix = (int **)malloc(rows); Codice:
int **matrix = (int **)malloc(rows*sizeof(int *)); quello che o scritto sopra è per evitare la lettura su un file, tu ti copi tutto il file dentro una stringa e poi lo leggi da li senza accedere appunto ai file, attenzione però in questo modo ad ogni cambiamento di dati devi ricompilare il programma... Ciao. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:40.