Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti, come un utente del forum mi ha consigliato, sto seguendo i lucidi di un docente di Informatica del Politecnico di Torino. Io sono arrivato all'argomento stringhe, ma qui ho trovato un esempio, che non riesco davvero a capire. Il programma prenderebbe in input due strighe (la prima per esempio 'Olimpo', la seconda 'Oio', e dovrebbe stampare 'lmp', eliminando cioè dalla prima stringa i caratteri della seconda). Ecco il codice da lui proposto:
Codice sorgente - presumibilmente C++
#include <stdio.h>
#define MAXCAR 128
char*elimina(char str1[], char str2[]);
main()
{
char str1[MAXCAR], str2[MAXCAR];
printf("Dammi la stringa str1: ");
scanf("%s", str1);
printf("Dammi la stringa str2: ");
scanf("%s", str2);
printf("str1-str2= %s\n", elimina(str1,str2));
}
char*elimina(char str1[], char str2[])
{
int i, j, k;
for(i=j=0;str1[i]!='\0';i++)
{
for(k=0;(str2[k]!='\0')&&(str1[i]!=str2[k]);k++);
if(str2[k]=='\0')
str1[j++]=str1[i];
}
str1[j]='\0';
return str1;
}
Quello che non capisco è nel secondo for, nelle condizioni: la prima controlla che la stringa non sia finita, ma è la seconda che non capisco.
Da quel che ho capito io, con l'operatore && basterebbe che una delle due condizioni sia falsa per non entrare nel ciclo, ma se le lettere sono uguali, non dovrebbe essere falsa la seconda condizione?
Così è chiaro che la mia intenzione è di incrementare l'indice finché non trovo un carattere uguale.
Se proprio si vuole lasciare il for vuoto, meglio usare {} ma non un semplice punto e virgola, troppo facile sbagliare.