COHERENT manpages
This page displays the COHERENT manpage for strncpy() [Copy one string into another].
List of available manpages
Index
strncpy() -- String Function (libc) Copy one string into another #include <string.h> char *strncpy(string1, string2, n) char *string1, *string2; unsigned n; strncpy() copies up to n bytes of string2 into string1, and returns string1. Copying ends when strncpy() has copied n bytes or has encountered a null character, whichever comes first. If string2 is less than n characters in length, strncpy() pads string1 to length n with one or more null bytes. Example This example, called swap.c, reads a file of names, and changes them from the format first_name [middle_initial] last_name to the format last_name, first_name [middle_initial] It demonstrates strncpy(), strncat(), strncmp(), and index(). #include <stdio.h> #include <string.h> #include <stdlib.h> #define NNAMES 512 #define MAXLEN 60 char *array[NNAMES]; char gname[MAXLEN], lname[MAXLEN]; main(argc, argv) int argc; char *argv[]; { FILE *fp; register int count, num; register char *name, string[60], *cptr, *eptr; unsigned glength, length; if (--argc != 1) { fprintf (stderr, "Usage: swap filename\n"); exit(EXIT_FAILURE); } if ((fp = fopen(argv[1], "r")) == NULL) printf("Cannot open %s\n", argv[1]); count = 0; while (fgets(string, 60, fp) != NULL) { if ((cptr = index(string, '.')) != NULL) { cptr++; cptr++; } else if ((cptr = index(string,' ')) != NULL) cptr++; strcpy(lname, cptr); eptr = index(lname, '\n'); *eptr = ','; strcat(lname," "); glength = (unsigned)(strlen(string) - strlen(cptr)); strncpy(gname, string, glength); name = strncat(lname, gname, glength); length = (unsigned)strlen(name); array[count] = malloc(length + 1); strcpy(array[count],name); count++; } for (num = 0; num < count; num++) printf("%s\n", array[num]); exit(EXIT_SUCCESS); } See Also libc, strcpy(), string.h ANSI Standard, §7.11.2.4 POSIX Standard, §8.1 Notes string1 must point to enough space to n bytes; otherwise, a portion of the program or operating system may be overwritten.