В parseInt целые числа объявляются как один символ, но вы передаете массив.Кроме того, вы сравниваете userInput как целое число, а не как ASCII.
void parseInt(char userInput[40], char integers[40])
{
int j = 0;
for(int i = 0; i<sizeof(userInput); i++)
{
if( userInput[i] == '1' || userInput[i] == '2' || userInput[i] == '3' ||
userInput[i] == '4' || userInput[i] == '5' || userInput[i] == '6' ||
userInput[i] == '7' || userInput[i] == '8' || userInput[i] == '9' ||
userInput[i] == '0' )
{
integers[j] = userInput[i];
j++;
}
}
}
Если вы используете свой код,
Он возвращает один символ по ссылке, но не возвращает цепочку символов.
char parseInt(char userInput[40], char& integers)
{
int j = 0;
for(int i = 0; i<sizeof(userInput); i++)
{
Здесь вы сравниваете userInput с первыми элементами таблицы ASCII.
if( userInput[i] == 1 || userInput[i] == 2 || userInput[i] == 3 ||
userInput[i] == 4 || userInput[i] == 5 || userInput[i] == 6 ||
userInput[i] == 7 || userInput[i] == 8 || userInput[i] == 9 ||
userInput[i] == 0 )
{
В следующей строке вы изменяете значение одного символа, но недобавление нового символа, потому что это не массив (я полагаю, вы поняли идею, потому что вы объявляете j)
integers = userInput[i];
j++;
}
}
}
В основном,
cin.ignore()
не нужно, это делаетчто вы теряете первого персонажа цепочки.
- Объявите целые числа как массив символов
- Сравните userInput как ASCII, а не как целое число (вы можете сравнить его как целое число, но вы должны использовать целое число, соответствующее символу наТаблица ASCII)
- Удалить строку cin.ignore ()