/* * ======================================================================== * Input routines * ======================================================================== */ /* * standard cards are always 4 bytes long including the NUL */ char * read_spades_card_string[] = { "Enter the card you wish to play:", /* Action: Play a card */ }; enum read_spades_card_actions { READ_SPADES_CARD_PLAY = 0, }; int read_spades_card(int fd, enum read_spades_card_actions action, char buf[4]) { int read_len, i; char read_buf[16]; write (fd, read_spades_card_string[action], strlen(read_spades_card_string[action])); if (0 >= (read_len = read(fd, read_buf, 16))) { return(read_len); } /* Eliminate initial spaces */ for (i = 0; i < read_len - 4; i++) { if (!isspace((int)read_buf[i])) { break; } } buf[0] = toupper(read_buf[i++]); buf[1] = toupper(read_buf[i++]); buf[2] = toupper(read_buf[i++]); buf[3] = '\0'; return(1); } int read_spades_bid(int fd, int * bid) { int read_len; char read_buf[16]; write (fd, "Enter the number of tricks you will take:" , strlen( "Enter the number of tricks you will take:")); if (0 >= (read_len = read(fd, read_buf, 16))) { return(read_len); } *bid = strtoul(read_buf, NULL, 10); return(1); }next slide