▁( including ▁the ▁null - byte ) ▁▁▁▁ ▁// ▁in ▁order ▁to ▁avoid ▁overflow s ▁▁▁▁ ▁if ▁( str len ( first _ name ) ▁> ▁ 1 5 ▁|| ▁ ▁str len ( last _ name ) ▁> ▁ 1 5 ) ▁{ ▁▁▁▁▁▁ ▁printf (" first _ name ▁and ▁last _ name ▁cannot ▁be ▁longer ▁that ▁ 1 6 ▁characters !\ n "); ▁▁▁▁▁▁ ▁return ▁- 1 ; ▁▁▁▁ ▁} ▁▁▁▁▁ ▁// ▁Initial izing ▁the ▁members ▁▁▁▁ ▁struct ▁student ▁new _ student ; ▁▁▁▁ ▁new _ student . age ▁= ▁age ; ▁▁▁▁ ▁new _ student . sem ester ▁= ▁ 1 ; ▁▁▁▁ ▁new _ student . student _ number ▁= ▁get _ new _ student _ number (); ▁▁▁▁▁▁▁▁▁ ▁str cpy ( new _ student . first _ name , ▁first _ name ); ▁▁▁▁ ▁str cpy ( new _ student . last _ name , ▁last _ name ); ▁▁▁▁▁ ▁// copy ing ▁the ▁result ▁to ▁output ▁▁▁▁ ▁mem cpy ( output , ▁& new _ student , ▁sizeof ( struct ▁student )); ▁▁▁▁ ▁return ▁ 0 ; ▁} ▁ ▁In ▁any ▁case , ▁even ▁when ▁a ▁variable ▁is ▁implicitly ▁initial ised ▁to ▁a ▁default ▁value ▁like ▁ 0 , ▁this ▁is ▁typically ▁not ▁the ▁correct ▁value . ▁Initial ised ▁does ▁not ▁mean ▁correct ▁if ▁the ▁value ▁is ▁a ▁default ▁one . ▁( However , ▁default ▁initial isation ▁to ▁ 0 ▁is ▁a ▁right ▁practice ▁for ▁pointers ▁and ▁arrays ▁of ▁pointers , ▁since ▁it ▁makes ▁them ▁invalid ▁before