Для инициализации массива нужны фигурные скобки
Я пытался заставить этот код работать для шифрования *char[]
массив указателей с шифрованием ROT13. Пара проблем:
- Программа не компилируется. Ошибка: 'text': для инициализации массива нужны фигурные скобки.
- 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
,