这是我正在研究的问题。

“一种名为“ 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);

09-06 15:51