summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/OR_PRACTICAL_C/12_7.c
blob: aac1173aa7e32f53215e4e077ce6030eb65ecfb2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/********************************************************
 * split -- split an entry of the form Last/First       *
 *      into two parts.                                 *
 ********************************************************/
#include <stdio.h>
#include <string.h>

/* Our version of the library function */
char *strchr(char *, char);

main()
{
    char line[80];      /* The input line */
    char *first_ptr;    /* pointer to the first name */
    char *last_ptr;     /* pointer to the last name */

    (void)fgets(line, sizeof(line), stdin);

    /* Get rid of trailing newline */
    line[strlen(line)-1] = '\0';        

    last_ptr = line;    /* last name is at beginning of line */

    first_ptr = strchr(line, '/');      /* Find slash */

    /* Check for an error */
    if (first_ptr == NULL) {
        (void)fprintf(stderr,
            "Error: Unable to find slash in %s\n", line);
        exit (8);
    }

    *first_ptr = '\0';  /* Zero out the slash */

    first_ptr++;        /* Move to first character of name */

    (void)printf("First:%s Last:%s\n", first_ptr, last_ptr);
    return (0);
}
/********************************************************
 * strchr -- find a character in a string               *
 *      Duplicate of a standard library function,       *
 *      put here for illustrative purposes.             *
 *                                                      *
 * Parameters                                           *
 *      string_ptr -- string to look through            *
 *      find -- character to find                       *
 *                                                      *
 * Returns                                              *
 *      pointer to 1st occurrence of character          *
 *      in string or NULL for error                     *
 ********************************************************/
char *strchr(char * string_ptr, char find)
{
    while (*string_ptr != find) {

       /* Check for end */

       if (*string_ptr == '\0')
           return (NULL);       /* not found */

        string_ptr++;
    }
    return (string_ptr);        /* Found */
}