c-数组初始化需要大括号



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

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

这是我的代码:

void rot13(int numlines, char * text[]){
    //printf("%sn", text);
    //char encrypted[length(text)];
    for (int i=0; text[i]>=''; 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 ("%dn ",*text);
}
int main(){
    char text1[]="parliament";
    char * text[]=&text1;
    rot13(10, text);
}

char * text[]=&text1;中,text被声明为指向char的指针数组。因此是数组类型。如果不使用大括号,就无法初始化它(异常:字符串文字)。最好将其声明为指向字符的指针

char **text = &text1;   

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

相关内容

  • 没有找到相关文章

最新更新