Newsgroups: comp.os.msdos.djgpp From: "Paul Fitzgibbons" Subject: Problem with strncpy (DJGPP in msdos window in win95) Sender: news AT csc DOT liv DOT ac DOT uk (News Eater) Message-ID: Date: Mon, 22 Sep 1997 11:31:16 GMT Lines: 55 Organization: Computer Science, University of Liverpool, UK To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Hi there just like to say that I am enjoying learning with DJGPP and have also got the Allegro Library from Shawn Hargreaves. I have a problem with the following code. When inputting strings of up to 20 chars there doesnt appear to be a problem but if i input a string of length 21 or greater the string then ends in funny characters. I thought strncpy would have avoided this? I am able to write a function to check if the length is greater and to loop if it is, but i would rather do it by shortening the string. Any help will be much appreciated. Many thanks Paul Fitz [code follows] #include #include #include struct DETAIL { char name[21]; //max length +1 for NULL }; void dispstru(struct DETAIL *ptr); main() { struct DETAIL Personal_info; struct DETAIL *Personal_info_ptr; char buff[1024]; //nice and long to avoid errors printf("What is the name? : "); gets(buff); strncpy(Personal_info.name,buff,20); //copy 20 chars printf("name is : %s",Personal_info.name); Personal_info_ptr=&Personal_info; dispstru(Personal_info_ptr); } void dispstru(struct DETAIL *ptr) { printf("Pointer to name = : %s ",ptr->name); }