Note that there are some explanatory texts on larger screens.

plurals
  1. PORestrict input to 4 digit entry (0-9)
    primarykey
    data
    text
    <p>Homework Assignment #2 for Program Design Class</p> <blockquote> <p>Part 1:</p> <ul> <li>Prompt user for 8 digit account number (0-9), repeat until valid.</li> </ul> <p>Part 2:</p> <ul> <li>Prompt user to set 4 digit pin number (0-9), repeat until valid.</li> <li>Prompt user to verify pin number, return to Part 2 if invalid.</li> </ul> </blockquote> <p>The program works, however, I'd like to validate for some extra things:</p> <ol> <li>Accept leading zeros ex., '00123456' </li> <li>Reject additional letters ex., '12345678a' </li> <li>Reject additional 'words' ex., '12345678 123abc'</li> </ol> <p>I'm thinking, prompt for a string input, check the length of it (4 or 8) and if it passes that test, convert it to an integer and proceed with the tests in place. </p> <p>Any thoughts?</p> <p>[ A lot of you dislike the use of <code>scanf</code>, I know. I'm more interested in how I can make minimal changes to my program instead of reinventing [my] wheel! :) ]</p> <pre><code>#include &lt;stdio.h&gt; int main() { int return_val = 0; int account_number = 0; int pin_number = 0; int pin_number_verify = 0; int valid_pin = 0; // Account # Validation while(1) { printf ("Please enter your 8 digit account number:\n"); return_val = scanf("%d", &amp;account_number); if((account_number &gt; 9999999) &amp;&amp; (account_number &lt; 99999999)) { if (return_val == 1) { break; } } printf("Invalid account number. Account number must be 8 digits.\n\n"); while (getchar() != '\n'); /* Clear keyboard input buffer */ } return_val = 0; // Pin # Validation while(1) { printf ("\nPlease choose a 4 digit pin number:\n"); return_val = scanf("%d", &amp;pin_number); while (getchar() != '\n'); /* Clear keyboard input buffer */ if((pin_number &gt; 999) &amp;&amp; (pin_number &lt; 9999)) { if (return_val == 1) { while(1) { printf("Re-enter pin number:\n"); return_val = scanf("%d", &amp;pin_number_verify); while (getchar() != '\n'); /* Clear keyboard input buffer */ if(pin_number != pin_number_verify) { printf("Pin setup unsuccessful\n\n"); break; } else { valid_pin = 1; break; } } } } if (valid_pin == 1) { break; } printf("Invalid pin number. Pin number must be 4 digits.\n"); while (getchar() != '\n'); /* Clear keyboard input buffer */ } // Successful account setup prompt printf("\nPin setup successful!\n"); printf("Account #: %d\n", account_number); printf("Pin #: %d\n", pin_number); printf("Have a nice day.\n"); return 0; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload