01/12/11 7:56
peppo
Ciao, eccomi di nuovo con un'altra domanda:
devo verificare le estensioni di alcuni file, la mia idea è stata creo un vettore
chiamato estensioni [ nrEstensioni] ove metto i valori che mi aspetto.
creo un vettore tmp dove metto l'estensione del file, e confronto.
Il problema è il seguente: il primo valore del vettore estensioni è il contenuto di una printf() . Mi spiego meglio, per dare feedback all'utente mostro delle cose su schermo, per qualche motivo una parte di queste cose mi va a finire nella prima ( e solo nella prima) cella del vettore estensioni.
questa è la funzione:
magari scrivo in qualche parte della memoria dove non dovrei?
Grazie,
devo verificare le estensioni di alcuni file, la mia idea è stata creo un vettore
chiamato estensioni [ nrEstensioni] ove metto i valori che mi aspetto.
creo un vettore tmp dove metto l'estensione del file, e confronto.
Il problema è il seguente: il primo valore del vettore estensioni è il contenuto di una printf() . Mi spiego meglio, per dare feedback all'utente mostro delle cose su schermo, per qualche motivo una parte di queste cose mi va a finire nella prima ( e solo nella prima) cella del vettore estensioni.
questa è la funzione:
int verificaEstensione( char *nomeFile, int tipo ) { /*questa variabile contiene le possibili combinazioni di estensioni ( statiche ==> modalità NON interattiva) */ char *estensioni[nrEstensioni] = {"CAB", "sec", "cab","CAB","CAB"}; // char *estensioni[nrEstensioni] = {"sec", "cab", "CAB","CAB"}; /* NOTE: mantenerlo così o metterlo in define */ char tmp[ 3 ] ; int i = 0; // indice generico int corrispondenze = 0; // indica il numero di corrispondenze con le estensioni se > 0 è ok printf("\n VERIFICA ESTENSIONE FILE \n"); /* estensione su tre caratteri, parto dalla fine del nome e verifico estensione */ printf("\nVerifico estensione di %s", nomeFile); // printf("\n strlen Estensione: %d", strlen(nomeFile)); for ( i = strlen(nomeFile) -3 ; i < strlen(nomeFile ) ; i ++ ) { tmp[i - (strlen(nomeFile) -3) ] = nomeFile[ i ]; } for ( i = 0 ; i< nrEstensioni; i++) printf("\neste [i] %s",estensioni[i]); tmp[ 3 ] = 'Ciao, eccomi di nuovo con un'altra domanda:
devo verificare le estensioni di alcuni file, la mia idea è stata creo un vettore
chiamato estensioni [ nrEstensioni] ove metto i valori che mi aspetto.
creo un vettore tmp dove metto l'estensione del file, e confronto.
Il problema è il seguente: il primo valore del vettore estensioni è il contenuto di una printf() . Mi spiego meglio, per dare feedback all'utente mostro delle cose su schermo, per qualche motivo una parte di queste cose mi va a finire nella prima ( e solo nella prima) cella del vettore estensioni.
questa è la funzione:
int verificaEstensione( char *nomeFile, int tipo ) { /*questa variabile contiene le possibili combinazioni di estensioni ( statiche ==> modalità NON interattiva) */ char *estensioni[nrEstensioni] = {"CAB", "sec", "cab","CAB","CAB"}; // char *estensioni[nrEstensioni] = {"sec", "cab", "CAB","CAB"}; /* NOTE: mantenerlo così o metterlo in define */ char tmp[ 3 ] ; int i = 0; // indice generico int corrispondenze = 0; // indica il numero di corrispondenze con le estensioni se > 0 è ok printf("\n VERIFICA ESTENSIONE FILE \n"); /* estensione su tre caratteri, parto dalla fine del nome e verifico estensione */ printf("\nVerifico estensione di %s", nomeFile); // printf("\n strlen Estensione: %d", strlen(nomeFile)); for ( i = strlen(nomeFile) -3 ; i < strlen(nomeFile ) ; i ++ ) { tmp[i - (strlen(nomeFile) -3) ] = nomeFile[ i ]; } for ( i = 0 ; i< nrEstensioni; i++) printf("\neste [i] %s",estensioni[i]); tmp[ 3 ] = '{parsed_message}'; /* verifico estensione */ printf("\nEstensioni[ %d ] %s",tipo, estensioni[ tipo +1]); if(strncmp(estensioni[ tipo + 1 ], tmp, 3) == 0 ) { corrispondenze ++; } // printf("\nNr corrispondenze estensioni: %d", corrispondenze); if ( corrispondenze == 0) { printf("\nERRORE: estensione file %s non corretta\n", nomeFile); return 0; } return 1; }
magari scrivo in qualche parte della memoria dove non dovrei?
Grazie,'; /* verifico estensione */ printf("\nEstensioni[ %d ] %s",tipo, estensioni[ tipo +1]); if(strncmp(estensioni[ tipo + 1 ], tmp, 3) == 0 ) { corrispondenze ++; } // printf("\nNr corrispondenze estensioni: %d", corrispondenze); if ( corrispondenze == 0) { printf("\nERRORE: estensione file %s non corretta\n", nomeFile); return 0; } return 1; }
magari scrivo in qualche parte della memoria dove non dovrei?
Grazie,
aaa