我一直在尝试让这段代码使用ROT13加密来加密*char[]
指针数组。几个问题:
- 程序未编译。错误为:"text":数组初始化需要大括号
- 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
。