Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: [c] funzione strlowr

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213

    [c] funzione strlowr

    Ho un problema in c con la seguente funzione che trasforma i caratteri maiuscoli in caratteri minuscoli. L'ho utilizzato funzione delete del seguente codice:

    codice:
    /*Funzione per eliminare un prodotto dato il nome*/
    void EliminaProdotto (int mycar[50])
    {
        int risultato;
        char deleteprodotto[50];
    
        if(ContaProdotti(mycar) > 0)
        {
            printf("Inserisci il nome del prodotto che vuoi eliminare dal carrello = ");
            scanf("%s", deleteprodotto);
            risultato = Delete(mycar, deleteprodotto);
            if(risultato != 0)
            {
                printf("Prodotto eliminato correttamente\n");
            } else {
                printf("Non esiste alcun prodotto con questo nome\n");
            }
        }
    }
    
    int Delete (int mycar[50], char deleteprodotto[50])
    {
        int i,j,successo=0;
        listaprodotti();
    
        for(i=0;i<50 && successo==0;i++)
        {
            if((j = mycar[i]) == -1)
            {
                successo = 0;
            } else if(strcmp(strlwr(deleteprodotto),strlwr(elemento[j].nome)) == 0)
            {
                mycar[i] = -1;
                successo = 1;
                return 1;
            }
        }
        return 0;
    }
    Se la parola non ha spazi il tutto funziona tranquillamente, altrimenti mi dice che non ha trovato alcun prodotto con questo nome...come posso risolvere?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Il valore di j non è definito
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    EDIT: ho visto che j assume un valore dal vettore ...

    Purtroppo il codice non è completamente compilabile e non può essere provato ...

    Comunque, mi domando a cosa ti serva la variabile

    successo

    dato che non la usi
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Vabbè si, a parte la cosa giusta che mi hai detto della variabile successo che non è utilizzata poichè poi c'è il return, ma la cosa che mi chiedo è che cambia qualcosa nella funzione strlowr in caso ci siano degli spazi nella parola? Oppure nel strcmp...

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    No, non cambia nulla, ma bisogna capire, quando capita il problema, se alla strlwr stai effettivamente passando quello che pensi ...

    Prova a fare un po' di debugging bloccando l'esecuzione quando c'è la strcmp per dare un'occhiata ai valori delle stringhe passate.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Ho fatto il debug, in pratica se io scrivo "succo di frutta" lui mi passa solo succo. Quindi l'errore è già prima del strcmp poichè non mi passa tutta la stringa succo di frutta ma solo succo...come devo risolvere?

  7. #7
    La scanf con specificatore "%s" legge una singola parola; usa la fgets per leggere tutta la riga (ricordandoti di eliminare il newline finale).
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Non riesco ad utilizzare la funzione fgets, non è che potresti fornirmi un esempio?

  9. #9
    Hai letto la sua documentazione? Cosa non ti è chiaro?
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Mi chiede tre valori tra cui uno è un file...cosa devo inserire?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.