PDA

Visualizza la versione completa : [C] Problemi con Malloc


AR64S-H
10-04-2003, 19:59
Ciao
Raga ho un piccolo problema ad apprendere l'uso di Malloc.
C'è questo esercizio che mi chiede di leggere due stringhe e di unirle restituendo un puntatore a questa nuova stringa. Si usi Malloc.
Ci ho provato ma niente non ci riesco ottengo risultati con caratteri fuori da ogni immaginazione :gren:
Sapete aiutarmi
Grazie
Ciao :ciauz:

AR64S-H
10-04-2003, 20:28
please :(

Johnny_Depp
10-04-2003, 20:44
qua trovi qualcosa di simile:
http://forum.html.it/forum/showthread.php?s=&postid=3090705#post3090705

AR64S-H
10-04-2003, 20:55
grazie lo guardo con calma ma da quello che ho potuto leggere fin ora non viene usato malloc

AR64S-H
10-04-2003, 21:04
Non avete niente con malloc?

r0x
10-04-2003, 21:07
Non eri tu quello che parlava come un saggio, adorava tanto i puntatori e ne insegnava l`uso a dei poveri newbies?

AR64S-H
18-04-2003, 12:58
Mi confondi con qualkun altro io ho sempre odiato i puntatori quando non avevo un libro sul quale imparare il C.
Non mi sono mai fatto il maestro perchè sono il primo a dovere imparare dagli altri. Comunque se cerchi di farmi adirare non ci riuscirai capito :ciapet:
Se mi vuoi aiutare accettero molto volentieri il tuo aiuto.
Scusa Jhonny ho guardato meglio e ho trovato ciò che mi serviva avevi ragione c'era malloc.
Ho un altro problema però non riescoa inserire uno spazio fra le due stringhe. Ho provato in tanti modi ma non ci sono riuscito. Vi posto il listato. Come posso fare?
Grazie :ciauz:


#include <stdio.h>
#include <string.h>

int main(){
char str1[20];
char str2[20];
char *ptr;
char a;
int l;
printf("\nInserisci due stringhe: \n");
scanf("%s",str1);
scanf("%s",str2);
l=strlen(str1)+strlen(str2)+1;
ptr=(char*)malloc(l*sizeof(char));
strncpy(ptr,str1,strlen(str1));
strncpy(ptr+strlen(str1)+1,str2,strlen(str2));
ptr[strlen(str1)+strlen(str2)+1]='\0';
printf("%s\n",ptr);
system("pause");
}

gdipietro
18-04-2003, 13:15
Così dovrebbe funzionare

#include <stdio.h>
#include <string.h>

int main()
{
char str1[20];
char str2[20];
char *ptr,*b=" ";
char a;
int l;

printf("\nInserisci due stringhe: \n");
scanf("%s",str1);
scanf("%s",str2);
l=strlen(str1)+strlen(str2)+1;
ptr=(char*)malloc(l*sizeof(char));
strncpy(ptr,str1,strlen(str1));

strncpy(ptr+strlen(str1),b,strlen(b));

strncpy(ptr+strlen(str1)+strlen(b),str2,strlen(str 2));

ptr[strlen(str1)+strlen(str2)+strlen(b)]='\0';
printf("%s\n",ptr);
}


Ho cercato di continuare con la tua logica, però se non ti sei accorto prima c'era un errore, ti stampava solo 1 delle 2 stringhe che inserivi! :)

AR64S-H
18-04-2003, 13:20
davvero a me le stampava entrambe. Tu che compilatore usi.
Comunque grazie ora provo.

AR64S-H
18-04-2003, 13:29
Avevi ragione ne stampava solo una. Comunque io ho l'eseguibile che me ne stampava due con al centro un carattere qualsiasi quindi forse quando ho chiuso mi sono dimenticato di salvare gli ultimi salvataggi che avevo fatto perchè guardando meglio il sorgente non era così l'ultimo che avevo creato.:bhò:
Ciao :ciauz:

Loading