处理字符数组。如何在不声明其大小的情况下定义数组?

时间:2018-04-23 21:35:05

标签: visual-c++

我有一个编写c ++程序的任务:

  • 声明一个名为gamma的数组,类型为char。
  • 声明一个名为元音的字符数组char。
  • 提示用户在数组gamma中输入n个字符。
  • 定义了一个名为save vowels的函数,用于确定并返回gamma数组中元音字母的数量,并将它们保存在元音数组中。

我已经尝试过编写这个但是我遇到了很多错误,尤其是gamma数组。

#include<iostream>
using namespace std;


void main()
{
    char gamma[];
    int i;
    cout<<"insert characterst//insert -1 when you finish "<<endl;

    while(i!=-1)
    {

        cin>>i;
        gamma[]='i';


    }

    char vowels[]={'a','e','i','o','u'};}

1 个答案:

答案 0 :(得分:0)

你看起来很顺利。

  

声明一个名为gamma的数组,类型为char。

char gamma[];

这部分几乎是正确的,尽管数组的大小为0.如果你想给它一个10的大小,你可以将它改为

char gamma[10];
  

声明一个名为元音的数组,类型为char。

这部分原样很好。

char vowels[]={'a','e','i','o','u'};

该列表会自动为vowels提供5的大小并指定值。

  

提示用户在数组gamma中输入n个字符。

你希望用cout / cin线完美地完成它。一个小的挑剔是你应该更喜欢使用&#34; \ n&#34;在cout结束而不是endl,因为它更快。

cout << "insert characterst//insert -1 when you finish\n";

您还需要更改写入阵列的方式。您必须指定要写入的索引。

gamma[0] = 3; // Set the first element of gamma to 3
gamma[2] = 11;// Set the third element of gamma to 11

您需要在while循环中添加一个计数器,以了解您要写入gamma的位置

int counter = 0;
while(...) {
    cin >> i;
    gamma[counter] = i;
    counter++;
}

您还需要在while循环中添加一个检查,以确保您不会写入伽玛阵列的末尾。 这可能是导致错误的原因。

例如,如果我们定义的伽玛大小为10,则它只能容纳10个字符。尝试将11个字符写入gamma可能会导致程序崩溃。尝试添加支票,如:

while( i != -1 && counter < 10) // where 10 is capacity of gamma
  

定义了一个名为save vowels的函数,它确定并返回gamma数组中元音字母的数量,并将它们保存在元音数组中。

在这一点上你没有提出任何问题,所以我无法帮助你。