esatto. Spero possa chiarirti ulteriormente le idee.
bye
There are 10 kinds of people in the world: who knows the binary numeration and who not
COME NO!???Orig. inviato da standard
xò mi sembra che entrambe le funzioni che mi hai proposto non mi ritornano la stringa concatenata...
Orig. inviato da The Great World
codice:#include <stdio.h> #include <string.h> #include <stdlib.h> char *f(const char *str1, const char *str2){ char *strf; strf = (char*)calloc(strlen(str1) + strlen(str2) + 1, sizeof(char)); strcpy(strf, str1); strcat(strf, str2); return (strf); } void main(){ char str1[]="conca", str2[]="tena"; printf("%s\n",f(str1, str2)); }
...Terrible warlords, good warlords, and an english song
x Johnny_Depp:
accidenti che strano quote che hai!!...si vede che sei moderatore
cmq, grazie, copio e incollo.
x tutti:
ora ho capito la logica che bisogna usare:
"vuoi attaccare due mattoni vicini? assicurati che ci sia sotto la terra! (e assicurati che ci rimanga)"
ho solo una perplessità:
che senso ha dare a disposizione una funzione di libreria che concateni stringhe
(strcat) se bisogna sempre preoccuparsi che non faccia danni da sola?
e una logica da programmatori o da masochisti?
io uso questo codice:
beh il primo printf funziona, il secondo no (il programma si blocca con la solita odiosa finestrella...)Codice PHP:#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct listaCollegata{ struct listaCollegata *pt;
char *stringa1;
}lista_posizioni;
lista_posizioni *lista;
char *f(const char *str1, const char *str2);
char *f(const char *str1, const char *str2){
char *strf;
strf = (char*)calloc(strlen(str1) + strlen(str2) + 1, sizeof(char));
strcpy(strf, str1);
strcat(strf, str2);
return (strf);
}
int main(){
printf("%s\n",f("Salve!\n", "come state?"));
lista->stringa1 = f("Salve!\n", " come state?");
printf("%s\n",lista->stringa1);
getchar();
return 0;
}
cosa c'è che non va?
il valore di ritorno sopravvive alla fine della funzione f?
allora ho capito il mio errore: non allocavo memoria per il puntatore alla struttura.
così funziona:
domanda: la memoria allocata nella funziona f, come si può deallocare?Codice PHP:int main(){
printf("%s\n",f("Salve!\n", "come state?"));
lista = (lista_posizioni*)calloc(1,sizeof(lista_posizioni));
lista->stringa1 = f("Salve!\n", " come state?");
printf("%s\n",f("Salve!\n", "come state?"));
getchar();
free(lista);
return 0;
}
Perchè ti sei scordato di sistemare la terra sotto i mattoncini. Devi allocare memoria anche per stringa1, altrimenti e' normale che il programma vada in crash.
bye
There are 10 kinds of people in the world: who knows the binary numeration and who not