C ++错误:“ char [26]”初始化程序过多

时间:2018-10-22 14:21:36

标签: c++

编译时,出现以下错误:

Error: Too many initializers for 'char[26]'.

我一直收到此错误,您可以帮我吗?这是代码。

#include <iostream>
#include <fstream>
using namespace std;

int defunct();

int defunct(char a[], char b[], char c[]){
    int d,l,s,m,mod;
    mod = 47;
    s = 1;
    m = 0;
    for(d = 0;d <= 6;d++){
        for(l=0;l<=25;l++){
            if (a[d] = c[l]){
                s *= l + 1;
            }
            if (a[d] = ' '){
                s *= l + 1;
            }
        }
    }
    for(d = 0;d <= 6;d++){
        for(l=0;l<=25;l++){
            if (b[d] = c[l]){
                m *= l + 1;
            }
            if (b[d] = ' '){
                m *= l + 1;
            }
        }
    }
    if ((s%mod)==(m%mod)){
        cout << "GO\n";
    }
    if ((s%mod)!=(m%mod)){
        cout << "STAY\n";
    }
}

int main(){
        int i;
        char a[6], b[6];
        char alphabet[26] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
        i = 0;
        ofstream fout ("ride.out");
        ifstream fin ("ride.in");
        fin >> a >> b;
        fout << defunct(a, b, alphabet);
        return 0;
}

我应该怎么做才能消除此错误?谢谢,非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您是用字符串而不是字符来创建字母:

char alphabet[26] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};

使用:

char alphabet[26] = {'A', 'B', 'C', /* etc. */};

答案 1 :(得分:2)

以下代码段会产生类似的错误:

#include <iostream>
int main()
{

    char alphabet[1] = {"A","B"};
    return 0;
}
  1. ... main.cpp | 6 |错误:“ char [1]”的初始化程序太多
  2. ... main.cpp | 6 |错误:字符数组的初始化字符串太长 [-fpermissive] |
  3. ... main.cpp | 6 | warning:未使用的变量'alphabet' [-Wunused-variable] |

构建失败:2个错误,1个警告(0分钟,7秒)=== |


您的代码中字母的位置编号正确,但是每个位置存储两个字符。在我的代码中,我只有一个位置,并且试图存储两个“事物”。

“ A”表示您有一个字符串,其中字符'A'后跟0。您需要两个位置来存储它们。现在,将代码更改为以下内容:

char alphabet[2][2] = {"A","B"};

如果这样做,则仅保留上面的错误(3)。 (这仅用于说明)


要初始化char,请使用单引号。有适当数量的位置来存储字符。希望对您有所帮助。