delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/09/24/11:46:16

Newsgroups: comp.os.msdos.djgpp
From: "Paul Fitzgibbons" <pfitzg AT ribble DOT csc DOT liv DOT ac DOT uk>
Subject: Problem with strncpy (DJGPP in msdos window in win95)
Sender: news AT csc DOT liv DOT ac DOT uk (News Eater)
Message-ID: <EGwqnM.2v2@csc.liv.ac.uk>
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

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 <stdio.h>
#include <string.h>
#include <stdlib.h>


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);
}




- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019