Who told you that? user_name, password and users are global variables, residing in the data portion of memory, with a very small address. i is a stack variable, living way up in the high memory addresses. Overflowing them to change the value of i would require megabytes or gigabytes of data. And you have to know exactly where to stop to avoid overwriting any other important values on the stack, like other variables, function return addresses, etc. That's obviously impractical; are you sure you didn't misunderstand? Overflowing into the users table is relatively easy, requiring 40ish characters, and the program gives me a welcome prompt with my bogus username and password.
I was told I need to try and change the value of "i" to be able to get to think i have entered a right use/pass combo.