1) Usa il tag 'code' quando pubblichi il codice.
2) Togli system (PAUSE)
3) Usa fgets al posto della scanf. La scanf termina sugli spazi. ---> fgets (p,sizeof(p),stdin);
4) Non riscrivere ugual codice per cercare l'inizio della parola. Crea una funzione
5) La parte di copia s1 inizializza p a 1 e non zero. i non viene incrementata
6) Cerca di usare il minor numero possibile di variabili
7) Cerca di usare il minor numero possibile di condizioni oppure cerca di raggrupparle
...
Rimane da dire che questa funzione così pensata (mancanza del parametro di lunghezza massima s3) è insicura su un potenziale buffer overflow...
Studia questa versione aiutandoti con un debugger:
char *trova_parola (char *s,int n)
{
char *p=s;
while (n)
{
for (;*p==' ' && *p;p++);
if (--n)
for (;*p!=' ' && *p;p++);
}
return p;
}
int unisci_stringhe (char s1[], char s2[], char s3[])
{
char *p1,*p2;
int len=0;
p1=trova_parola (s1,2);
p2=trova_parola (s2,3);
for (;*p1 && *p1!='\n' && *p1!=' ';p1++)
s3[len++]=*p1;
for (;*p2 && *p2!='\n' && *p2!=' ';p2++)
s3[len++]=*p2;
s3[len]='\0';
return len;
}
Saluti,
Max