Если вы знаете, какое значение копировать, то вам не нужно malloc
s.first_name = "John";
Что если вы узнаете, какое значение копировать во время выполнения?
В этом случае вам нужно malloc
и strcpy
.
fgets(tempbuf, sizeof tempbuf, stdin);
s.first_name = malloc(somelength);
strcpy(s.first_name, tempbuf);
или
s.first_name = tempbuf;
В последнем случае first_name
всегда будет указывать на последнее значение, сохраненное в tempbuf
.