Buongiorno!! avrei bisogno di una mano su un progr molto semplice che date 2 stringhe letterali in input, mi sputa fuori una terza stringa che contiene tutte le lettere che la prima stringa non ha in comune con la seconda:
es.: a[]="militare" b[]="mare" ---------------> c[]="ilit"
credo di aver compreso bene il programma in quello che deve fare, però quando compilo il codice che vi riporto sotto mi fa una cosa strana:
#include<stdio.h>
#include<ctype.h>
#define MAX 300
int len(char*s)
{
int i=0;
while(s[i]!='\0')
i++;
return i;
}
void differenza(char*a, char*b, char*c)
{
int i,j,k,u,cont,t=0;
for(i=0;i<len(a);i++)
{
a[i]=tolower(a[i]);
}
for(i=0;i<len(b);i++)
{
b[i]=tolower(b[i]);
}
//printf("%s\n",a);
//printf("%s\n",b);
for(i=0;i<len(a);i++)
{
if(isalpha(a[i])==0)
printf("\nERROR\n");
}
for(i=0;i<len(b);i++)
{
if(isalpha(b[i])==0)
printf("\nERROR\n");
}
if(a[0]=='\0')
{
c[0]='\0';
printf("La stringa a e' nulla e anche la c:\n%s",c);
}
if(b[0]=='\0')
{
printf("La stringa c e' uguale alla a:\n%s",a);
}
for(u=0;u<len(a);u++)
{
cont=0;
for(k=0;k<len(b);k++)
{
if(a[u]==b[k])
cont++;
}
if(cont==0)
{
c[0+t]=a[u];
t++;
}
}
printf("La stringa c diventa:\n%s",c);
}
main()
{
char a[MAX], b[MAX], c[MAX];
int i;
printf("inserisci la stringa a (digita 0 se vuoi inserire una stringa nulla):\n");
scanf("%s",a);
if(a[0]=='0' && len(a)==1)
a[0]='\0';
printf("inserisci la stringa b (digita 0 se vuoi inserire una stringa nulla):\n");
scanf("%s",b);
if(b[0]=='0' && len(b)==1)
b[0]='\0';
printf("Si e' inserito rispettivamente \"%s\" e \"%s\".\n", a, b);
differenza(a,b,c);
return 0;
}
Ore se digito "mari" e poi "orme" mi da come output:
ai(più una serie di caratteri speciali di cui alcuni mai visti)
dove sbaglio?? grazie per la dritta