0

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

  1. 该程序无法编译。错误是:“文本”:数组初始化需要花括号。
  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);
}
4

1 回答 1

2

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

char **text = &text1;   

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

于 2014-09-20T15:43:41.293 回答