Для инициализации массива нужны фигурные скобки

Я пытался заставить этот код работать для шифрования *char[] массив указателей с шифрованием ROT13. Пара проблем:

  1. Программа не компилируется. Ошибка: 'text': для инициализации массива нужны фигурные скобки.
  2. ROT13 не работает должным образом. Он сохраняет числовое значение кода ASCII, а не его эквивалентную букву.

Вот мой код:

void rot13(int numlines, char * text[]){
    //printf("%s\n", text);
    //char encrypted[length(text)];

    for (int i=0; text[i]>='\0'; i++){
        if (*text[i]>='A' && *text[i]<='Z'){
            *text[i]=(((*text[i]-'A')+13)%26 + 'A');
        }else if(*text[i]>='a' && *text[i]<='z'){
            *text[i]=(((*text[i]-'a')+13)%26 + 'a');
        }
    }

    printf ("%d\n ",*text);
}

int main(){
    char text1[]="parliament";
    char * text[]=&text1;
    rot13(10, text);
}

1 ответ

В char * text[]=&text1;, text объявлен как массив указателей на char, Следовательно, имеет тип массива. Его нельзя инициализировать без использования фигурных скобок (исключение: строковые литералы). Лучше объявить это как указатель на указатель на символ

char **text = &text1;   

Вы должны отметить, что декларация char * text[] в main и в параметре функции не то же самое. Когда объявлено как параметр функции char * text[] эквивалентно char **text,

Другие вопросы по тегам