[C] What is the relationship between string length, allocated memory size and overflow?
People > Companies ❤️ - programming.dev [Unofficial]
April 25, 2026
submitted by akunohana to learn_programming 2 points | 0 comments
If I allocate [] or [1] to intCheck the program goes into an endless loop from the very start. No user input required. If, however, I allocate [2] or more, the program works as intended, as long as the user input is less than the number of bytes previously allocated. If, however, the user input is greater , the program repeats the else condition of the while loop - here, printf - the number of times that corresponds to the byte size previously allocated to char intCheck. Is this an overflow of choice or what?
//Bank of Haruhi
//TODO
// - Create user account: require user first name, last name, user name, password, age (deny if < 20 yrs)
// - Prompt login (deny if != password && username)
// - Display menu ("About the Bank of Haru", "Account Settings", "Check your balance", "Deposit", "Withdraw", "Close account", "Logout")
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main(void) {
//Base
char intCheck[3] = ""; //Will "if (sscanf(char,%d,&int) == true)" check for ANY "char" or a predetermined amount of "char"?
//Registration and login
char firstName[] = "";
char lastName[] = "";
char password[] = "";
int age = 0;
//Menues and selections
int choice = 0;
int arithmeticChoice = 0;
//Balance, deposit and withdrawal
float balance = 0.0;
float deposit = 0.0;
float withdraw = 0.0;
printf("Welcome to the Bank of Haruhi! Please login (1) or create an account (2): ");
while (fgets(intCheck, sizeof(intCheck),stdin)) {
intCheck[strlen(intCheck) - 1] = '\0';
if (sscanf(intCheck, "%d", &choice) == true && sizeof(intCheck) == 4 && choice == 1 || choice == 2) break; //I'm keeping "sizeof(intCheck)" in order to excercise byte size input validation, but I could just remove it and let "if choice == 1 || 2" restrict the valid input.
else printf("Please enter ""1"" to login or ""2"" to create a new account: ");
}
return 0;
}
The program is, of course, not nearly complete. I just stopped doing anything else, as soon as I stumbled upon this phenomenon.
Discussion in the ATmosphere