1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /* manybook.c -- multiple book inventory */
- #include <stdio.h>
- #include <string.h>
- char * s_gets(char * st, int n);
- #define MAXTITL 40
- #define MAXAUTL 40
- #define MAXBKS 100 /* maximum number of books */
- struct book { /* set up book template */
- char title[MAXTITL];
- char author[MAXAUTL];
- float value;
- };
- int main(void)
- {
- struct book library[MAXBKS]; /* array of book structures */
- int count = 0;
- int index;
-
- printf("Please enter the book title.\n");
- printf("Press [enter] at the start of a line to stop.\n");
- while (count < MAXBKS && s_gets(library[count].title, MAXTITL) != NULL
- && library[count].title[0] != '\0')
- {
- printf("Now enter the author.\n");
- s_gets(library[count].author, MAXAUTL);
- printf("Now enter the value.\n");
- scanf("%f", &library[count++].value);
- while (getchar() != '\n')
- continue; /* clear input line */
- if (count < MAXBKS)
- printf("Enter the next title.\n");
- }
-
- if (count > 0)
- {
- printf("Here is the list of your books:\n");
- for (index = 0; index < count; index++)
- printf("%s by %s: $%.2f\n", library[index].title,
- library[index].author, library[index].value);
- }
- else
- printf("No books? Too bad.\n");
-
- return 0;
- }
- 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;
- }
|