c++ - Switch Statement Not Allowing First User Input -
this function checks two-dimensional char array , goes through each word in array, using size, searching > take switch statement searching cases.
i having problem in switch statement, user input first time switch statement goes through default case.
void parseword(char story[][256], int size) { (int = 0; < size; i++) { char prompt[256][32]; if (story[i][0] == '<') { switch (story[i][1]) { case '#': story[i][0] = '\n'; story[i][1] = 0; break; case '{': story[i][0] = ' '; story[i][1] = '\"'; story[i][2] = 0; break; case '}': story[i][0] = '\"'; story[i][1] = ' '; story[i][2] = 0; break; case '[': story[i][0] = ' '; story[i][1] = '\''; story[i][2] = 0; break; case ']': story[i][0] = '\''; story[i][1] = ' '; story[i][2] = 0; break; default: int p = 1; prompt[i][0] = (char)(toupper(story[i][1])); (int j = 2; story[i][j] != '>'; j++) { if (story[i][j] == '_') prompt[i][p] = ' '; else prompt[i][p] = story[i][j]; p++; } cout << '\t' << prompt[i] << ": "; cin.getline(prompt[i], 32); int z = 0; (int t=0; prompt[i][t] != '\0'; t++) { story[i][t] = prompt[i][t]; z++; } story[i][z] = 0; } } } return; } cin.getline(prompt[i], 32); having problem first time ran.
this output when run function, user input in *'s:
web site name: verb: *run* plural noun: *dogs* plural noun: *cats* proper noun: *jimmy* adjective: *smart* noun: *table* noun: *desk* boolean operator: *xor* noun: *shoe* favorite website: *google.com* website: *yahoo.com* adjective: *cold* emoticon: *:p* as can see, cin.getline(prompt[i], 32) skipped when code ran , right away goes next prompt , asks user input. not making entered in verb equal web site name should be, not allowing entered web site name , making empty. verb still equal to, in case "run".
why switch statement seemingly skipping cin.getline(prompt[i], 32) statement first time around? times default case ran after first seem working expected , can't see or understand why user input not allowed first time default case ran in switch.
thanks help!
i found in other functions in program received input cin. looking @ why getline skips first line? saw cin , cin.getline() don't work together. after trying cin.ignore() statements (which fixed problem created many others) decided exclusively input using cin.getline(). inputs work now.
Comments
Post a Comment