Необъяснимое изменение результата работы программы

При разработке программы проявилась одна странность.

При первом вызове участка кода, который начинается "//ИНТЕРЕСУЕТ ВОТ ЭТОТ УЧАСТОК КОДА" программа заходит в 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;
}

'''


Ответы (0 шт):