THANK YOU ALL!!! - what errors should I check for and handle?

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, specifially 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?)
scanf gives me shivers. Please use -Werror=format compiler flag to catch dumb errors that will make your code crash in mysterious ways.