1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /* names2.c -- passes and returns structures */
- #include <stdio.h>
- #include <string.h>
- #define NLEN 30
- struct namect {
- char fname[NLEN];
- char lname[NLEN];
- int letters;
- };
- struct namect getinfo(void);
- struct namect makeinfo(struct namect);
- void showinfo(struct namect);
- char * s_gets(char * st, int n);
- int main(void)
- {
- struct namect person;
-
- person = getinfo();
- person = makeinfo(person);
- showinfo(person);
-
- return 0;
- }
- struct namect getinfo(void)
- {
- struct namect temp;
- printf("Please enter your first name.\n");
- s_gets(temp.fname, NLEN);
- printf("Please enter your last name.\n");
- s_gets(temp.lname, NLEN);
-
- return temp;
- }
- struct namect makeinfo(struct namect info)
- {
- info.letters = strlen(info.fname) + strlen(info.lname);
-
- return info;
- }
- void showinfo(struct namect info)
- {
- printf("%s %s, your name contains %d letters.\n",
- info.fname, info.lname, info.letters);
- }
- char * s_gets(char * st, int n)
- {
- char * ret_val;
- char * find;
-
- ret_val = fgets(st, n, stdin);
- if (ret_val)
- {
- find = strchr(st, '\n'); // look for newline
- if (find) // if the address is not NULL,
- *find = '\0'; // place a null character there
- else
- while (getchar() != '\n')
- continue; // dispose of rest of line
- }
- return ret_val;
- }
|