Newsgroup: it.comp.lang.c
Titolo: problemi confronto stringhe

Ciao ragazzi..
spero di non annoiarvi con questo problema..
ma vorrei cercare di capirci qualcosa..
allora..ultimamente ho avuto a che fare con un programma, precisamente
una coda, che tra le varie richieste, chiedeva l'inserimento di una
parola in una char di max 15 caratteri..
Ad esempio char parola[15]..
Successivamente si inseriva un'altra parola..a questo punto si doveva
controllare con la parola precedente, se gli ultimi due caratteri
della prima parola erano uguali ai primi due della nuova parola
inserita, cioè, ad esempio, se inserisco "cane", affinchè si proceda
nel controllo, dovrò inserire "nero"..e poi a questo punto si
procedeva con la memorizzazione nella coda e così via..
Ho provato con strlen, in modo da calcolare la lunghezza della prima
stringa, posizionarmi negli ultimi due caratteri della prima parola e
fare il confronto con i primi due della seconda parola..ma senza
successo..
int x;
x=0;
char parola1[15];
printf ("\nInserisci parola:");
             scanf ("%s",tmp.parola);
             head = insert_word(tmp,head);
             x=strlen(tmp.parola);
             x=x-1;
             printf("\nInserisci parola:");
             scanf("%s",parola1);
             if (tmp.parola[0] == parola1[0]) || (tmp.parola[1] ==
parola1[1])
             head = insert_word(tmp,head);
Come posso fare?
Grazie

 per gli ultimi due caratteri di tmp.parola[]
uhm..si devo correggere l'operatore logico..il test devo farlo in modo
che gli ultimi due caratteri della prima parola siano uguali ai primi
due caratteri della seconda parola..
ad esempio cane - nero - rosicava...
il problema sta anche nei puntatori e nel collegamento con la
struttura..
struct nodo {
       char parola[15];
       struct nodo *prossimo;
};
typedef struct nodo Tnodo;
Tnodo * insert_word(Tnodo u,Tnodo * lista);   è la funzione per
inserire le parole nella coda
ed ecco la funzione in caso da un menu si scelga di inserire parole...
printf ("\nInserisci parola:");
             scanf ("%s",tmp.parola);
             head = insert_word(tmp,head);
                       x=strlen(tmp.parola);
                       x=x-1;
                       printf("\nInserisci parola:");
                       scanf("%s",parola1);
                       if (tmp.parola[0] == parola1[0]) ||
(tmp.parola[1] == parola1[1])
                       head = insert_word(tmp,head);
ciao grazie

                        head = insert_word(tmp,head);
ciao.
Non capisco: hai ripostato lo stesso codice identico, senza aver fatto
le modifiche che ti sono state suggerite... un errore o non ti sono
chiari i due suggerimenti? (cambiare operatore logico e confrontare
le ultime due lettere della prima parola invece delle prime due)
ciao
Giacomo

On 1 Ott, 21:05, Giacomo Degli Esposti

si..non mi è chiaro il suggerimento sul confronto delle ultime due
lettere della prima parola..
l'operatore logico lo correggo subito con && invece di ||
ciao


dati a[] e b[] due vettori di caratteri 0-terminati ( anche noti come 
stringhe )
a[0] e a[1] sono i primi due caratteri del vettore a[]
confrontare tra loro ( a[0] e b[0] ) e ( a[1] e b[1] ) stai controntando 
  tra loro i PRIMI caratteri delle due stringhe giusto ?
ora ti devi porre la domanda data una stringa, quali sono i due 
caratteri finali della stringa ?


appunto..i due caratteri finali della prima parola da confrontare con
i primi due della seconda parola..ho provato per la prima parola il
comando strlen ma poi non ho capito bene come fare capire al
compilatore che una volta saputa la lunghezza della stringa, deve
prendere gli ultimi due caratteri, chiaramente escluso il terminatore
'/ 0'..grazie
ciao