这是我正在研究的问题。
“一种名为“ rotate13”的用于加密文本的简单加密方案是,通过向前计数13个字母(从'z'到'a'或'Z循环),将每个字母(a…z或A ... Z)转换为另一个字母如有必要,请返回“ A”。
编写一个名为rotate13的函数,该函数将单个以NULL终止的字符串作为参数
并将其转换为等效的rotate13。该函数应直接修改字符串,然后
不应该返回任何东西。记住,只有字母应该改变;其他所有字符都保留
相同。您可以假设ctype.h已正确包含在程序顶部,因此
您可以根据需要使用库中的任何函数。 ”
这是我不断得到的错误
"error C2664: 'rotate13' : cannot convert parameter 1 from 'char (*)[10]' to 'char *[]'"
谢谢您的帮助。这将有助于我对决赛进行修订。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int rotate13(char *array[]);
int size=10;
int main()
{
char arr[10];
printf("Please enter the letters you wish to encrypt: ");
scanf("%s",&arr);
printf("%s",arr);
rotate13(&arr);
system ("pause");
return 0;
}
int rotate13(char *array[])
{
int pointer;
while(*array[pointer]!='\0')
{
if(isupper(*array[pointer])!=0)
{
if(*array[pointer]<'N')
*array[pointer]=*array[pointer]+13;
else
*array[pointer]=*array[pointer]-13;
}
else
{
if(*array[pointer]<'n')
*array[pointer]=*array[pointer]+13;
else
*array[pointer]=*array[pointer]-13;
}
pointer++;
}
printf("%s", *array);
return 0;
}
最佳答案
从&
删除scanf("%s",&arr);
scanf(“%s”,arr);rotate13
期望使用char **
类型的参数,但是通过传递&arr
可以传递int (*)[10]
类型的参数。将arr
传递给rotate13
将解决您的问题。rotate13(arr);