У меня есть домашнее задание, которое включает в себя создание массива c-строк из пользовательского ввода, изменение содержимого массива, чтобы каждая другая буква была заглавной и выводила окончательный результат , Мой код в настоящее время застрял в бесконечном цикле. Я пытаюсь понять, как получить доступ к массиву, а затем изменить его. (На этой неделе мы только начали работать с массивами.) Я вставил свой код ниже. Любая помощь приветствуется!C++: Помогите исправить бесконечный цикл при изменении массива c-string
#include <iostream>
#include <cctype>
#include <string>
#include <cstring>
const int j = 1024;
using namespace std;
int main()
{
char letter;
char lineArray[j];
char modifyArray[j];
cout << "Hello! Please type a letter, word, " //user input prompt
<< "or phrase, followed by enter." << endl;
cin.getline(lineArray, j);
for(int i=0; i < 1024; i++)
{
letter = lineArray[i];
while (letter != '\n') //change and store letters
{
if (i%2 == 0)
letter = toupper(letter);
else if(i%2 != 0)
letter = tolower(letter);
}
modifyArray[i] = letter;
}
cout << modifyArray[j];
return 0;
}
Не каждая строка заканчивается «\ п». Calc удлиньте длину строки перед ее повторением. – antonpp
Если первая буква '' A'', то цикл while будет бесконечным, потому что '' A '! =' \ N'', и не имеет значения, измените ли вы его на 'a' ', так как' 'a'' не равно' '\ n''. Внешний цикл должен быть 'for (int i = 0; lineArray [i]! = '\ 0'; i ++)', а 'while' просто нужно уйти. – user3386109
'while (letter! = '\ N')' - единственный выход отсюда - это установить букву в '' \ n'' - которую вы никогда не делаете ... - также не нужно говорить 'else if (i % 2! = 0) ', просто скажите' else'. – John3136