10
THANK YOU ALL!!! - what errors should I check for and handle?
(piefed.blahaj.zone)
submitted
3 days ago* (last edited 3 days ago)
by
akunohana@piefed.blahaj.zone
to
c/c_lang@programming.dev
Thank you all for your kind, patient and educative responses when I obnoxiously post amateur questions! ๐ While I cannot make any promises because of how my brain works, I am almost ready to continue reading The C Programming Language, 2nd Edition. I just want to experiment a little bit with error handling, specifically how to handle wrong input (char VS. int, etc.) and also to learn to indentify code that runs the risk of overflow/underflow.
Question: what errors do you recommend checking for and handling?
Meanwhile, thank you all! ๐ฅฐ
#include <stdio.h>
//Function declarations
int newPin();
int checkPin(int i);
//Program that prompts for, verifies and saves pins temporarily into an array
int main() {
//New pin
int pin = 0;
//History
int history[10] = {0,0,0,0,0,0,0,0,0,0};
int history_limit = 10;
int history_index = 0;
printf("Hello there! What would you like to do? (V)iew your saved pins, (S)ave a new pin or (E)xit: ");
int choice = 0;
while ((choice = getchar()) != EOF) {
switch (choice) {
case ('V'): { //Display saved pins
printf("\nYour saved pins are:\n\n");
for (int i = 0; i < history_limit; i++) printf("%d\n", history[i]);
printf("\nWhat would you like to do next? (V)iew your saved pins, (S)ave a new pin or (E)xit: ");
break;
}
case('S'): { //Prompt for and verify newly entered pin
pin = newPin();
if (checkPin(pin) == pin) {
history[history_index] = pin;
history_index++;
if (history_index >= history_limit) history_index = 0;
}
break;
}
case ('E'): goto EXIT; //Terminate program
}
}
EXIT: printf("\nGoodbye!\n");
return 0;
}
//Function definitions
//Prompt user to enter a new pin
int newPin() {
int pin = 0;
printf("This enter your pin: ");
scanf("%d", &pin);
getchar();
return pin;
}
//Verify newly entered pin
int checkPin (int i) {
int check = 0;
printf("Confirm your new pin: ");
while((scanf("%d", &check)) != EOF) {
if (check != i) printf("Mismatch! Confirm your new pin: ");
else if (check == i) {
printf("Success! Your new pin is %d. What would you like to do next? (V)iew your saved pins, (S)ave a new pin or (E)xit: ", i);
goto EXIT;
}
}
EXIT: return i;
}
//TODO
//Error handling (overflow, input data type, other?)