Это могло бы сработать с небольшой помощью от чистой удачи, даже если бы вы все испортили позже, я полагаю. Более или менее все не так. Сначала вы читаете строку в область, на которую указывает неинициализированный указатель (или, может быть, вы читаете значение указателя, я даже не уверен, что должен делать >> (char*)
). Вам лучше изменить определение на
std::string inputIP;
затем вы пытаетесь проанализировать его, используя scanf
, и передаете этот указатель как строку формата. То, что вы имели в виду, использует sscanf
. Предполагая, что вы изменили тип inputIP
, вы можете использовать
sscanf(inputIP.c_str(),"%d....
Затем вы присваиваете локальной главной переменной x
, которая скрывает глобальную переменную, которая остается неинициализированной, когда вы используете ее в функции. Просто удалите часть int
в назначении следующим образом:
x=ip[0];
и создайте массив ip
из четырех элементов.
int ip[4];
Тогда это может сработать. Если только я не пропустил что-то еще.
И еще одна вещь: если вы используете какой-либо элемент управления исходным кодом (например, с помощью git
, вы можете начать новый проект в кратчайшие сроки), то вы будете знать, что вы изменили, когда запутались, просто зафиксируйте заранее, закоммите часто.