If the user inputs a sentence containing spaces the while loop stops at one of these spaces. Why is this happening? are '\0' and a space the same or did i do something else wrong?
int main ( )
{
char user_input[200];
cin>>user_input;
int i=0;
while(user_input[i]!='\0')
{
i++;
}
cout<<i;
return 1;
}
Thanks everyone, I appreciate your help.
This is an issue with reading using
>>
into a char array. It splits at whitespace when tokenizing. Try printinguser_input
to screen to confirm this.Using
getline
into astd::string
is generally safer in this context (as mentioned by daknøk). And I assume the input is likely to be terminated by a carriage return?\0
is the null terminating character with ASCII code0
. Space is another character with ASCII 32 i suppose. In fact you are doing this.It takes input till you press space or enter. So no space is present in your
user_input
string. Use this instead ofcin
.This is because your input stops reading when white space is entered. You can use
cin.unsetf(ios::skipws)
By default it is set to skip white spaces. With this you will get your desired result.