[RISOLTO][C] funzione strtok

di Anonimizzato8509 il
21 risposte

21 Risposte - Pagina 2

  • if(scelta2==3)
                    {
                        fgets(stringa,150,new);
                        strcpy(stringa2,stringa);
                        p = strtok(stringa, " ");
                        p = strtok(NULL, " ");
                        p = strtok(NULL, " ");
                        p = strtok(NULL, " ");
                        printf("%s ",p);
                        if(strcmp(p,parola)==0)
                            printf("%s",stringa2);
                    }
    
    Questo è il codice, il printf nell'if non viene mai eseguito anche se p stampato prima corrisponde alla parola inserita..
  • [quote="freshp"]
    if(scelta2==3)
                    {
                        fgets(stringa,150,new);
                        strcpy(stringa2,stringa);
                        p = strtok(stringa, " ");
                        p = strtok(NULL, " ");
                        p = strtok(NULL, " ");
                        p = strtok(NULL, " ");
                        printf("%s ",p);
                        if(strcmp(p,parola)==0)
                            printf("%s",stringa2);
                    }
    
    La fgets legge e lascia nella stringa il crlf alla fine ... controlla cosa c'è alla fine della stringa letta.
  • Questo è il codice attuale:
    
    if(scelta2==3)
                    {
                        fgets(stringa,150,new);
                        strcpy(stringa2,stringa);
                        p = strtok(stringa, " ");
                        p = strtok(NULL, " ");
                        p = strtok(NULL, " ");
                        p = strtok(NULL, " ");
                        printf("%s %d %d\n",p,strlen(p),strlen(parola));
                        if(strcmp(p,parola)==0)
                            printf("%s",stringa2);
                    }
    
    Questo l'output prodotto:
    Inserire parola chiave: Calcio
    Basket
     7 6
    Calcio
     7 6
    Calcio 6 6
    Sandro Penny 3489078345  Calcio
    Premere un tasto per continuare . . .
    Come puoi vedere l'ultimo contatto in lista viene stampato..ma il penultimo no nonostante siano uguali (teoricamente). Ma nella lettura viene letto il fine riga credo..e quindi dalla strcmp non vengono viste come uguali..Giusto?
  • Prova ad aggiungere dopo la

    fgets(stringa,150,new);

    la riga

    stringa[strlen(stringa)-1]=0;
  • Così però l'ultimo mi taglia una lettera della categoria..
  • Perché nell'ultima riga del file non sei andato a capo quando l'hai scritto ...

    Puoi sempre controllare prima di eliminare il carattere
    
    int lu=strlen(stringa)-1;
    if(stringa[lu]=='\n') stringa[lu]=0;
    
  • Grazie mille per la pazienza oregon. Ora finalmente va bene, domani cercherò di ottimizzare qualcosa ma non credo di aver ancora bisogno di questo topic. Lo segno come risolto!
Devi accedere o registrarti per scrivere nel forum
21 risposte