Problema lettura stringa da file

di il
2 risposte

Problema lettura stringa da file

Buona sera a tutti, ho un problema riguardante la lettura di stringhe da file. Inizialmente ricevo una parola da stdin tramite una
"scanf("%s", &parola);"
che viene poi salvata in un array di tipo char.
A questo punto il vero problema: sto scrivendo una funziona che riceve come paramentro una parola e che deve decidere se la funzione risiede nel dizionario. Il codice è questo:
int vocabolario(char *parola){
	char s[30];
	FILE* FileIn = fopen("dizionario_grande.txt","r");
	while(!feof(FileIn)){
		fgets(s, 30, FileIn);
		if(s==parola)
			return 1;	
	}
	return 0;
}
e il dizionario è scritto in questa forma:
a
abaca
abache
abachi
abacista
abaciste
abacisti
abaco
Non è che il problema sta nel fatto che fgets legge anche il \n incluso alla fine di ogni riga del dizionario? se si come liberarmene? ho provato in molti modi e non ho più idea di come fare... grazie dell'aiuto!

2 Risposte

  • Re: Problema lettura stringa da file

    Nel c per comparare due stringhe si usa la funzione .
    Con l'operatore di ugualiabza invece compari che i due puntatori siano uguali.
    Sicuramente il '\n' ti da anche il problema che hai segnalato, per toglierlo:
    
    void toglen(char* s)
    {
        if ( NULL == s ) return;
        if ( '\0' == *s ) return;
        size_t l = strlen(s);
        if ( l < 1 ) return;
        if ( s[ l - 1 ] == '\n' ) s[ l - 1 ] = '\0';
    }
    
    passandogli la stringa letta dal file verrà eliminato l'enter se presente.
  • Re: Problema lettura stringa da file

    Grazie mille, lo strcmp lo avevo rpovato all'inizio, poi avevo iniziato a provare le cose più impossibili perchè non funzionava. Ora funziona tutto, grazie!
Devi accedere o registrarti per scrivere nel forum
2 risposte