Иметь
typedef struct person {
char name[20]
char surname[20]
} person_t;
Мне нужно создать строку типа XXXXXX:YYYYYY
с функцией типа char* personToString(person_t *p)
. Я попытался сделать это:
char* personToString(person_t* p) {
int n1,n2;
n1=strlen(p->name);
n2=strlen(p->surname);
char *p = (char*) malloc((n1+n2+2)*sizeof(char));
strcat(p,puser->name);
strcat(p,":");
strcat(p,puser->surname);
return p;
}
Это дает мне разумный результат, но у меня есть некоторые ошибки при тестировании с помощью valgrind! Я также думаю, что есть более классный способ написать функцию!
sprintf
вместоstrcat
, напримерsprintf(p, "%s:%s", p->name, p->surname);
, плюс вы переопределяетеp
, вы получаете его как параметр, а затем объявляете его какchar *
, и вы неfree
свойchar *
- person Opsenas   schedule 18.07.2013sizeof(char)
не обязательно, так как всегда1
- person Yu Hao   schedule 18.07.2013struct person *p
вместоperson_t
, посколькуperson_t
— это объект, а неtypedef
? - person mohit   schedule 18.07.2013