Необъяснимое изменение результата работы программы
При разработке программы проявилась одна странность.
При первом вызове участка кода, который начинается "//ИНТЕРЕСУЕТ ВОТ ЭТОТ УЧАСТОК КОДА" программа заходит в myString = stringToArrayString(enterText()) я ввожу в консоли любой текст и вобщем-то все в порядке. А вот когда делаю этот же вызов процедуры в разделе case, то программа не дает обратиться к функции string enterText() (хотя вызов процедуры идет нормально, при добавлении туда, например, cout<< "!!!!"; текст выводится).
Не пойму в чем проблема. Помогите, пожалуйста '''
typedef char * arrayString;
int length(string& s); //вычисление длины строки
string enterText(); //автоматизация ввода строк
arrayString stringToArrayString(string s); //переводим string в динамический
int main(){
char choice;
arrayString myString, myString1, myString2;
int number; // ИНТЕРЕСУЕТ ВОТ ЭТА ЧАСТЬ КОДА
cout << "\n Enter you string: \n";
myString = stringToArrayString(enterText());
cout << "Enter namber simbol from you string: \n";
cin >> number;
cout << "\n characterAt - " << characterAt(myString, number);
cin >> choice;
while (choice != '0')
switch (choice) {
case '1':
int number; // ИНТЕРЕСУЕТ И ВОТ ЭТА ЧАСТЬ КОДА
cout << "\n Enter you string: \n";
myString = stringToArrayString(enterText());
cout << "Enter namber simbol from you string: \n";
cin >> number;
cout << "\n characterAt - " << characterAt(myString, number);
break;
................................................
// Вычисляем длину строки
int length(arrayString &s){
int count = 0;
while (s[count] != 0) count++;
return count;
}
//выводим указанный символ строки
char characterAt(arrayString& s, int position){
if (position <= length(s) )
return s[position-1];
else return 'N';
}
// Вводим строку
string enterText(){
char c;
string s="";
c = cin.get();
while (c != 10){
s += c;
c = cin.get();
}
return s;
}
// Переводим строку в динамическую
arrayString stringToArrayString(string s){
arrayString newS = new char[s.length()+1];
for (int i = 0; i < s.length(); i++)
newS[i] = s[i];
newS[s.length()] = 0;
return newS;
}
'''