29/07/2023 - Vincenzo.79 ha scritto:
27/07/2023 - oregon ha scritto:
Metti un contatore nel ciclo while della feof e un altro contatore nel ciclo while del token (che si azzera all'entrata) e falli visualizzare
Ho provato a risolvere il problema in maniera più semplice, nel senso che le righe ed il numero di parole, nal mio caso, non so variabili;
pertanto credo che possa svolgere l'esercizio anche senza usare la funzione strtok.
Il problema però è sempre lo stesso; cioè dovrei confrontare il numero di una parola per riga con il valore singolo inserito dall'utente (che poi è l'unica cosa che può cambiare), solo che non riesco a fare bene il contronto
Posto solo la porzione di codice incriminata:
for (n = 1; fscanf(f_in, "%s", words[n]) != EOF; n++) {
for(i = 0; i <= DIM2; i++) {
if(v[n] == v[i])
printf(" words[%d] = %s\n", n, words[n]);
}
}
Attento che fscanf si ferma allo spazio così come al ritorno a capo. Temo che la sola soluzione siano i due contatori che ti sono stati suggeriti.
Scrivo in italiano
Finché (il file non è ancora finito E il contatore delle righe non è ancora al punto giusto)
{
Leggo una riga
Faccio salire di 1 il contatore righe
}
//Ora O ho finito il file, O sono alla riga giusta
se(il file è finito)
{
Fallimento, e fine funzione
}
Leggo una riga
//Bene, ora la parola che mi serve può essere solo qui
Bel ciclo for in I fino alla lunghezza effettiva della riga
{
Se (l'i esimo carattere è uno spazio)
Alzo di 1 il contatore delle parole
Se il contatore è arrivato al numero giusto
Stampo il carattere letto
}
Se il contatore non è al numero giusto
{
La riga era troppo corta
}