我想把一个字符串指针接收到一个函数中,最多有50个字符和n(数字),反转它,每个字母都被它后面的n个字母所取代,根据A-B(以循环的形式-Z后面会有A)。
这就是我试图做的,它不工作,我种植:
#define MAX 50
void decrypt(char* cipher, int n);
int main(void)
{
int n = 0;
char cipher[MAX] = { "\0" };
printf("Enter cipher to decrypt: ");
fgets(cipher, sizeof(cipher), stdin);
scanf("Enter decryption key: %d", n);
decrypt(cipher, n);
getchar();
return 0;
}
void decrypt(char* cipher, int n)
{
int j = 0;
int leng = strlen(cipher);
for (int i = leng - 1; i >= 0; i--)
{
printf("%c", *(cipher + (i + n)));
}
}
从输入abc
2
,我期望输出edc
,我得到cba
1条答案
按热度按时间oyt4ldly1#
你的代码有很多问题。正如Jabberwocky指出的,你应该在编译时启用所有警告(类似于这样:
gcc program.c -Wall
)以下是您需要做的事情:
stdin
的stdio.h
strlen
的string.h
cipher
声明为指向数组的指针,在c中它已经是指针scanf
时,需要传入一个指向n
的指针strlen
接受指针,而不是指针指针scanf
只接受格式(“%d”表示数字),不像python中的input
cipher
中的代码有点混乱。以下是所有这些放在一起: