Ошибка C ++: слишком много инициализаторов для ‘char [26]’

При компиляции я получаю следующую ошибку:

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

Решение

Вы создаете свой алфавит из строки вместо символов:

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. */};
3

Другие решения

Следующий фрагмент кода генерирует похожие ошибки:

#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 | предупреждение: неиспользуемая переменная ‘alphabet’
    [-Wunused-переменная] |

Сбой сборки: 2 ошибки, 1 предупреждение (0 минут, 7 секунд) === |


В вашем коде есть правильное количество мест для алфавита, но вы сохраняете два символа для каждого места. В моем коде у меня только одно местоположение, и я пытаюсь сохранить две «вещи».

«A» означает, что у вас есть строка с символами «A», за которой следует 0. Вам необходимо иметь два местоположения для их хранения. Теперь измените код на следующий:

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

Если вы сделаете это, то останется только ошибка (3) выше. (Это только для объяснения)


Чтобы инициализировать символ, используйте одинарные кавычки. Иметь подходящее количество мест для хранения персонажей. Я надеюсь, что это помогает.

2

По вопросам рекламы [email protected]