c++ - copying contents from one char array to another but getting junk -
i accepting user input in format (123) 456-7890
, storing char array per assigned instructions. want copy numbers of input array have 1234567890
, leave out ( ) -
.
i formatted user input using cin.getline()
, use for
loop transfer numbers second array bizarre output. here code:
int main() { const int max = 15, dmax = 10; char nums[max], digit[dmax]; int usablen, rdx = 0; cout << "enter phone number in (xxx) xxx-xxxx format: "; cin.getline(nums, max); (int = 1; < 4; i++) { digit[rdx] = nums[i]; usablen = atoi(digit); cout << digit << endl; rdx++; } (int = 6; < 9; i++) { digit[rdx] = nums[i]; usablen = atoi(digit); cout << digit << endl; rdx++; } (int = 10; < 14; i++) { digit[rdx] = nums[i]; usablen = atoi(digit); cout << digit << endl; rdx++; } cout << endl << digit << endl; return 0; }
for now, ignore usablen = atoi(digit);
because later use. multiple cout <<
parts can see being stored @ each step. now, part can't understand , need with:
my output full of junk , despite fact used const int dmax = 10;
array 24 characters long. here output:
7ss╨vjs╨vπ(789) 678-1234 78s╨vjs╨vπ(789) 678-1234 789╨vjs╨vπ(789) 678-1234 7896vjs╨vπ(789) 678-1234 78967js╨vπ(789) 678-1234 789678s╨vπ(789) 678-1234 7896781╨vπ(789) 678-1234 78967812vπ(789) 678-1234 789678123π(789) 678-1234 7896781234(789) 678-1234 7896781234(789) 678-1234
why copying entirety of nums[]
on tail of digit[]
?
how clean array 7896781234
in it?
also, noticed whenever cin.getline(nums, max)
, if user inputs more max
characters, crashes! why , how prevent this?
i thought cin.getline
store fist nth characters defined max
sorry, lengthy explanation wanted make sure clear on asking. in advance on these issues.
you need make sure strings null terminated. example:
for (int = 1; < 4; i++) { digit[rdx] = nums[i]; digit[rdx+1] = '\0'; usablen = atoi(digit); cout << digit << endl; rdx++; }
Comments
Post a Comment