(LINGUAGGIO C)
Ciao ragazzi, ho incontrato un problema nella scrittura del seguente programma "Il file numeri.txt contiene un elenco di numeri in formato ascii, uno per riga, preceduti dalla base della sua rappresentazione espressa come intero (0 = binario, 1 = esadecimale e 2 = ottale). Si scriva un programma in linguaggio C che legga da riga comando il numero corrispondente alla base ed estragga dal file numeri.txt solo i numeri in ascii corrispondenti alla base salvandoli in una matrice di caratteri, li converta in decimale e li visualizzi sullo schermo."
codice:
FILE NUMERI.TXT
0 101001
1 A3F
0 010011
0 011
In pratica stavo scrivendo la funzione che prende in ingresso la base cercata, il puntatore al file
di dati e la matrice di caratteri contente il numero e restituisce quanti numeri con la base cercata sono stati trovati.
codice:
int Leggi_NumeriAscii(int base_cercata, FILE *fpin, char nc[][NCAR])
{
char temp;
int i=0,j=0,k=0;
while(!feof(fpin)){
fscanf(fpin,"%c",&temp);
printf(" temp=%c basecercata=%d\n",temp,base_cercata);
if(temp==base_cercata){
fscanf(fpin,"%s",&nc[i]);
printf(" nc[%d]=%s",i,nc);
i++;
}
}
printf("\n___________\n");
return i;
}
Di sicuro il codice è da rivedere per intero, però il problema principale è la parte in grassetto, ogni volta che faccio partire il programma non mi entra nella condizione "if(temp==base_cercata)" e non riesco proprio a capire dov'è che sbaglio...Vi prego illuminatemi...............
EDIT: penso che il mio errore sia nel confrontare due tipi di dati differenti, un char con un int...