ESERCIZIO CONCATENAZIONE C

di il
20 risposte

ESERCIZIO CONCATENAZIONE C

Scrivere l’espressione di controllo del secondo ciclo while contenuto nella seguente
funzione affich ´e essa restituisca la concatenazione delle due stringhe in input.
char *f(char *s, char *t) {
char *p = s;
while (*p)
p++;
while (...)
;
return s;
}
help!

20 Risposte

  • Re: ESERCIZIO CONCATENAZIONE C

    Cosa non capisci o non riesci a fare? in che modo possiamo aiutarti?
  • Re: ESERCIZIO CONCATENAZIONE C

    Praticamente non so come completare il while...avevo pensato di inserire
     strcat(p,t);
    ma come condizione non ne ho idea.. e poi non ho capito l utilizzo della p nel 1° ciclo
  • Re: ESERCIZIO CONCATENAZIONE C

    Il primo ciclo porta il puntatore alla stringa alla fine di essa,quindi *p sarà uguale a '\0'
    il concetto sarà dover riuscire a copiare la stringa partendo dalla sua stessa fine
    quindi da quella posizione di p dovrai iniziare a copiarci t fino a raggiungere lo '\0' di t aggiungendolo naturalmente alla fine di p.Il tutto naturalmente senza usare strcat! ma solo l'aritmetica dei puntatori.
    provaci.
  • Re: ESERCIZIO CONCATENAZIONE C

    Ho fatto:
    
    while (*p++=*t++)
    
    in modo tale copia da quella posizione tutti i caratteri (compreso il ‘\0’ finale) di t
    ma non va .-.
  • Re: ESERCIZIO CONCATENAZIONE C

    Prova con:
    while (*s++ = *t++)
  • Re: ESERCIZIO CONCATENAZIONE C

    Non va.. ma la s serve solo per mandarla in output, il lavoro si deve fare sulla p :\
  • Re: ESERCIZIO CONCATENAZIONE C

    Ah non avevo visto che vuoi restituire s...
    Perché se restituisci p funziona:
    
    char *mystrcat(char *s, char *t)
    {
    char *p = s;
    while (*s)
        s++;
    while (*s++ = *t++);
    return p;
    }
  • Re: ESERCIZIO CONCATENAZIONE C

    
    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>
    
    char *f(char *s, char *t);
    
    int main()
    {
    char *s="salerno";
    char *t="bye";
    char *ptr=f(s,t);
    printf("concatenazione: %s\n",ptr);
    }
    
    char *f(char *s, char *t) {
    char *p = s;
    while (*s)
        s++;
    while (*s++ = *t++);
    return p;
    }
  • Re: ESERCIZIO CONCATENAZIONE C

    Non mi va così..
  • Re: ESERCIZIO CONCATENAZIONE C

    Light cosi modifichi il concetto del programma e dell'esercizio e fai la stessa identica cosa!
    non va che significa?
    posta tutto il codice che hai usato.
  • Re: ESERCIZIO CONCATENAZIONE C

    L ho postato come aveva detto di fare light...cosi è come ho fatto io:
    
    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>
    
    char *f(char *s, char *t);
    
    int main()
    {
     char *s="salerno";
     char *t="byeeeee";
     char *ptr=f(s,t);
    
    printf("concatenazione: %s\n",ptr);
    }
    
    
    char *f(char *s, char *t) {
     char *p = s;
     /*porta il ptr alla fine della stringa*/ 
     
    while (*p)
      {p++;}
    
    while (*p++ = *t++)
    return s;
    }
  • Re: ESERCIZIO CONCATENAZIONE C

    while (*p++ = *t++)
    return s;
    questo frammento equivale a
    
    while (*p++ = *t++)
    {
        return s;
    }
    
    se non hai istruzioni nella while devi scrivere:
    while (*p++ = *t++)
        ;
    return s;
    o in alternativa
    while (*p++ = *t++) ;
    return s;
    dato che la while esegue la riga immediatamente sucessiva mettendoci il ; tu nonb le fai eseguire niente,la riga è vuota.
  • Re: ESERCIZIO CONCATENAZIONE C

    Beh dichiarando così s e t non ha speranza di funzionare...
    Prova ad usare la strcat della libreria C e ti darà comunque segmentation fault .
    
    #include <stdio.h>
    #include <string.h>
    
    char *f(char *s, char *t);
    
    int main()
    {
    char s[80]="salerno";
    char t[80]="bye";
    char *ptr=f(s,t);
    printf("concatenazione: %s\n",ptr);
    return 0;
    }
    
    char *f(char *s, char *t)
    {
    char *p = s;
    while (*s)
        s++;
    while (*s++ = *t++);
    return p;
    }
    
  • Re: ESERCIZIO CONCATENAZIONE C

    Grazie ad entrambi un ';' mancato ti puo costare tanto ahaha
Devi accedere o registrarti per scrivere nel forum
20 risposte