Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Parole Random!
Forum - C/C++ - Parole Random! - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 15:22
Sabato, 01/01/2011
forse il numero dato da Genera_Random() è troppo alto...

e poi fseek(fp, random, SEEK_SET);

e inoltre, se la fopen fallisce, restituisce il valore NULL, quindi controlla con if (fp != NULL) { /* codice */ }

e la fgets la usi in modo sbagliato... stai tentando di scrivere la stringa dentro la costante "%s", quindi il programma crasha.

Devi allocare un buffer con malloc e passare questo buffer come primo parametro alla fgets.

ad esempio
char * parola = malloc(30); // prelevo max 30 caratteri
fgets(parola, 30, fp);

PM Quote
Avatar
-Meng0- (Normal User)
Rookie


Messaggi: 40
Iscritto: 01/01/2011

Segnala al moderatore
Postato alle 15:46
Sabato, 01/01/2011
Risolto;)

Ultima modifica effettuata da -Meng0- il 01/01/2011 alle 15:49
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 15:49
Sabato, 01/01/2011
per curiosità che compilatore usi? vuole il ancora il vecchio casting esplicito...

comunque sia:

char * parola = (char *) malloc(30);

PS: poi magari mettici un bel

printf("\nParola scelta = %s\n", parola);

per avere qualcosa a video :-)

Ultima modifica effettuata da TheKaneB il 01/01/2011 alle 15:50
PM Quote
Avatar
-Meng0- (Normal User)
Rookie


Messaggi: 40
Iscritto: 01/01/2011

Segnala al moderatore
Postato alle 15:55
Sabato, 01/01/2011
Infatti avevo fatto proprio così:k:
Cmq ora sto usando Dev-C++, sono in una situazione d'emergenza!

PM Quote
Avatar
-Meng0- (Normal User)
Rookie


Messaggi: 40
Iscritto: 01/01/2011

Segnala al moderatore
Postato alle 9:41
Domenica, 02/01/2011
Risolti i problemi precedenti.
Ora devo semplicemente controllare se una determinata parola inserita dall'utente è presente nel file dizionario di cui parlavamo ieri.
Qalche spunto?
:(
Il mio problema principale è che la parola che inserisco (come array di caratteri termina con il \0, palesemente non sarà mai uguale a una prelevata da un .txt.
Come faccio ad eseguire il controllo senza considerare il \0, oppure considerando il \0 nella parola prelevata dal .txt?
Aiuto!

Ultima modifica effettuata da -Meng0- il 02/01/2011 alle 12:12
PM Quote
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Segnala al moderatore
Postato alle 12:56
Domenica, 02/01/2011
Allora:
Ammettiamo che il file in questione abbia questo contenuto
Codice sorgente - presumibilmente Plain Text

  1. q
  2. w
  3. e
  4. r
  5. t
  6. y
  7. u
  8. i
  9. o
  10. p
  11. a
  12. s
  13. d
  14. f
  15. g
  16. h
  17. j
  18. k
  19. l
  20. z
  21. x
  22. c
  23. v
  24. b
  25. n
  26. m


ammettiamo che tu voglia cercare la lettera 'g'. Bhe molto semplice:
1- Prendiamo ogni carattere nel file se è uguale la funzione ritorna 1 (il carattere è presente) altrimenti ritorna 0 (il carattere non è presente).
Dovrebbe uscire così:
Codice sorgente - presumibilmente C++

  1. char ch;
  2. while(!feof(my_file) {
  3.        ch = fgetc(myfile);
  4.        if ('g' == ch) return 0;
  5.        else continue;
  6. }


Facile no? :rotfl:

PM Quote
Avatar
-Meng0- (Normal User)
Rookie


Messaggi: 40
Iscritto: 01/01/2011

Segnala al moderatore
Postato alle 13:24
Domenica, 02/01/2011
Si, molto facile!
Il mio problema è che sto lavorando con delle stringhe!
Con i caratteri sarebbe molto più facile, ma io lavoro con array di caratteri e come ben sai il C al termine di ogni "stringa" concatena \0.
Ma comunque questo problema (anche grazie al tuo spunto) l'ho appena risolto:k:
Ora non capisco perchè non mi compila il progetto, dandomi come unico errore un "unterminated comment" alla linea 1:-?
Che diavolo è?:om:

PM Quote
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Segnala al moderatore
Postato alle 13:29
Domenica, 02/01/2011
Codice sorgente - presumibilmente C/C++

  1. #include <stdio.h>
  2.  
  3. int main (void) {
  4.     /* printf("ciao\n");
  5.         return 0;
  6. }



unterminated comment è un commento che non è stato chiuso e/o aperto. Se compili il programma di sopra ti darà lo stesso errore perchè come vedi nella riga 4 ho aperto un commento ma non lo chiuso. Infatti */ non è presente nel source del programma. :D

Ultima modifica effettuata da Pitagora il 02/01/2011 alle 13:32
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo