gpt4 book ai didi

c - 我在使用字符串通过引用传递时遇到问题

转载 作者:行者123 更新时间:2023-11-30 17:44:38 25 4
gpt4 key购买 nike

这是我正在研究的问题。

“一种名为“rotate13”的简单加密方案,用于加密文本,通过向前计数 13 个字母,从“z”循环到“a...z”将每个字母(a...z 或 A...Z)转换为另一个字母。如有必要,将“a”或“Z”恢复为“A”。编写一个名为rotate13的函数,它接受一个以空结尾的字符串作为参数并将其转换为它的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;
}

最佳答案

  1. scanf("%s",&arr); 中删除 &

    scanf("%s",arr);

  2. rotate13 需要一个 char ** 类型的参数,但是,通过传递 &arr 你正在向它传递一个类型的参数int (*)[10]。将 arr 传递给 rotate13 将解决您的问题。

    旋转13(arr);

关于c - 我在使用字符串通过引用传递时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19909817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com