2013-03-19 2 views
0

Я кодирую простую программу Mad Libs для школы. Код, который я отправляю, выполняет итерацию через массив, который ищет определенные подсказки. После обнаружения он использует подсказку, чтобы задать вопрос и записать ответ. Однако массив, содержащий мои ответы, пропускает первую букву каждого слова, кроме самой первой переменной. Вот мой код и копия вывода из массива. Это дерьмо, которое я знаю, но я учусь.getline() опускает первую букву моего вывода из массива.

char buffer[256]; 
int y = 0; 
//iterates through array looking for answers 
for(int i = 0;i <= 256;i++) 
{ 
    if(storyArray[i][0] == '<' && isalpha(storyArray[i][1])) 
    { 
     for(int x = 0; storyArray[i][x]; x++) 
     { 
      switch(storyArray[i][x]){ 
       case '<': 
        cout << "\t"; 
        x++; 
        putchar(toupper(storyArray[i][x])); 
        break; 
       case '>': 
        cout << ": "; 
         cin.ignore(); 
        cin.getline(buffer,256); 
        strcpy(answerArray[y],buffer); 
        y++; 
        break; 
       case '_': 
        cout << " "; 
        break; 
       default: 
        cout << storyArray[i][x]; 
        break; 

      } 
     } 
    } 
} 

Выход: Arrayitem1 rrayitem2

+1

Какие данные вы пытаетесь загрузить? Могли бы вы опубликовать образец этого? – jrd1

ответ

0

Вы говоря это пропустить первый символ. Вот что это делает:

cin.ignore(); 

Отнесите это, и со мной все будет в порядке.

+0

Для OP: http://stackoverflow.com/questions/5131647/why-would-we-call-cin-clear-and-cin-ignore-after-reading-input –

Смежные вопросы