ESERCIZIO CONCATENAZIONE C

di il
20 risposte

20 Risposte - Pagina 2

  • Re: ESERCIZIO CONCATENAZIONE C

    Perchè non dovrebbe funzionare?
  • Re: ESERCIZIO CONCATENAZIONE C

    Intendo questa versione, solo che al posto della funzione fatta in casa uso la strcat, quindi sicuramente corretta:
    Questa a me da sempre segmentation fault:
    
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    char *s="salerno";
    char *t="bye";
    char *ptr=strcat(s,t);
    printf("concatenazione: %s\n",ptr);
    return 0;
    }
  • Re: ESERCIZIO CONCATENAZIONE C

    Light perchè non dovrebbe andare?
  • Re: ESERCIZIO CONCATENAZIONE C

    Light hai sbagliato nel copiare il codice che ha postato,riguardalo.
  • Re: ESERCIZIO CONCATENAZIONE C

    Io intendo questo codice qui di sotto...
    Oltre all'errore del ; mancante ho provato a sostituire la chiamata della funzione f con la strcat e non funziona, da segmentation fault

    stefanaimon ha scritto:


    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

    Il segmentation fault è dovuto al fatto che si va a scrivere in una zona non allocata.
    Il puntatore s punta alla stringa "salerno" mentre avrebbe bisogno di un pò più di spazio...
    int main()
    {
    //char *s="salerno";
    char s[80];
    char *t="byeeeee";
    char *ptr;
    
    strcpy( s, "salerno" );
    ptr=f(s,t);
    
    printf("concatenazione: %s\n",ptr);
    }
    
    Comunque se si vuole sostituire la strcat() io ne farei una versione che controlla lo spazio a disposizione, aggiungendo un parametro intero che indica lo spazio allocato per la prima stringa (nell'es. qui sopra 80).
Devi accedere o registrarti per scrivere nel forum
20 risposte