数组初始化需要花括号

时间:2014-09-20 15:39:17

标签: c compilation rot13

我一直试图让这段代码用ROT13加密来加密*char[]指针数组。几个问题:

  1. 程序无法编译。错误是:'text':数组初始化需要大括号。
  2. ROT13似乎无法正常工作。它保存ASCII代码的数值而不是等效字母。
  3. 这是我的代码:

    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 个答案:

答案 0 :(得分:2)

char * text[]=&text1;中,text被声明为指向char的指针数组。因此是一种数组类型。它不能在不使用花括号的情况下进行初始化(例外:字符串文字)。最好将其声明为指向char

的指针
char **text = &text1;   

您应该注意char * text[]和函数参数中的声明main不相同。声明为函数参数时,char * text[]等同于char **text