【发布时间】:2015-12-01 00:08:28
【问题描述】:
我有一个家庭作业,其中涉及从用户输入创建一个 c 字符串数组,修改数组的内容,使每个其他字母大写,并输出最终结果。我的代码目前陷入无限循环。我很难准确理解如何访问数组然后修改它。 (我们这周才开始使用数组。)我在下面粘贴了我的代码。任何帮助表示赞赏!
#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;
}
【问题讨论】:
-
并非每一行都以 '\n' 结尾。在迭代之前计算字符串的长度。
-
如果第一个字母是
'A',那么while循环将无限循环,因为'A' != '\n',改成'a'也没关系,因为@987654326 @ 也不等于'\n'。外部循环应该是for(int i=0;lineArray[i]!='\0';i++),而while只需要消失即可。 -
while (letter != '\n')- 离开这里的唯一方法是将字母设置为'\n'- 你永远不会这样做...... - 也不需要说else if (i%2 != 0),只需说else。
标签: c++ c arrays string c-strings