PDA

Visualizza la versione completa : [c]Problema confronto tra due stringhe


Eduadie
22-02-2013, 17:53
Ho due funzioni: una mi chiede di inserire il nome del prodotto che voglio eliminare, l'altro mi prende questo nome, lo confronta con tutti quelli possibili e mi ritorna 1 o 0 a secondo se è stato trovato o no un nome uguale. Non mi da nessun errore in fase di compilazione ma quando lo eseguo e immetto i dati mi restituisce sempre 0.

Ecco le due function:

/*Funzione per eliminare un prodotto dato il nome*/
void EliminaProdotto (int mycar[50])
{
int i, j, contaprodotti = 0,risultato;
char deleteprodotto[50];

/*Inserisco la lista prodotti*/
listaprodotti();
printf("Codice\tNome\t\tDescrizione\t\t\tCosto\tSconto\n");

/*Mostro la lista*/
for(i=0;i<50;i++)
{
if((j = mycar[i]) != -1)
{
printf("%d\t%s\t%s\t%d\t%d\n", elemento[j].codice, elemento[j].nome, elemento[j].desc, elemento[j].costo, elemento[j].sconto);
contaprodotti += 1;
}
}

/*Se i prodotti nel carrello sono 0 mostro che non ci sono prodotti nel carrello*/
if(contaprodotti == 0)
{
printf("Non ci sono prodotti nel carrello\n\n");
}

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(deleteprodotto == elemento[j].nome)
{
j = -1;
successo = 1;
return 1;
}
}
return 0;
}


Dov'è l'errore? >.<

Marco1995
22-02-2013, 18:06
Non puoi confrontare delle stringhe semplicemente in questo modo


if (deleteprodotto == elemento[j].nome);


Devi utilizzare la funzione strcmp.

Comunque j che variabile è?
Potresti postare,per completezza,l'intero programma?

Poi perchè dovresti controllare un ciclo in quel modo?(mi riferisco alla funzione Delete)...non basterebbe un semplice break?

Eduadie
22-02-2013, 18:52
j = mycar[i]
E' il contenuto dell'array mycar di indice i...Mi serve per richiamare elemento giusto :)

Marco1995
22-02-2013, 18:54
Quindi nell'array mycar di indice i...quante tipologie di elementi ci sono?

Comunque inizia col modificare il confronto fra stringhe usando la strcmp().Se non risolvi posta l'intero programma

Loading