|
|
1.1 ! root 1: #include <stdio.h> ! 2: #define NNAMES 512 ! 3: #define MAXLEN 60 ! 4: ! 5: char *array[NNAMES]; ! 6: char gname[MAXLEN], lname[MAXLEN]; ! 7: extern int strncmp(), strcomp(); ! 8: extern char *strcpy(), *strncpy(), *strncat(), *index(); ! 9: ! 10: main(argc, argv) ! 11: int argc; char *argv[]; ! 12: { ! 13: FILE *fp; ! 14: register int count, num; ! 15: register char *name, string[60], *cptr, *eptr; ! 16: unsigned glength, length; ! 17: ! 18: if (argc != 2) { ! 19: fprintf (stderr, "Usage: strnmcpy filename\n"); ! 20: exit(1); ! 21: } ! 22: ! 23: if ((fp = fopen(argv[1], "r")) == NULL) { ! 24: printf("Cannot open %s\n", argv[1]); ! 25: } ! 26: count = 0; ! 27: ! 28: while (fgets(string, 60, fp) != NULL) { ! 29: if ((cptr = index(string, '.')) != NULL) { ! 30: cptr++; ! 31: cptr++; ! 32: } else ! 33: if ((cptr = index(string,' ')) != NULL) ! 34: cptr++; ! 35: ! 36: strcpy(lname, cptr); ! 37: eptr = index(lname, '\n'); ! 38: *eptr = ','; ! 39: ! 40: strcat(lname," "); ! 41: glength = (unsigned)(strlen(string) - strlen(cptr)); ! 42: strncpy(gname, string, glength); ! 43: ! 44: name = strncat(lname, gname, glength); ! 45: length = (unsigned)strlen(name); ! 46: array[count] = malloc(length + 1); ! 47: ! 48: strcpy(array[count],name); ! 49: count++; ! 50: } ! 51: ! 52: for (num = 0; num < count; num++) ! 53: printf("%s\n", array[num]); ! 54: exit(0); ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.