#include<stdio.h>
int encryption_check(char* s , char* t)
{
printf("%s",s);
int i=0 , diff = t[0] - s[0];
while(s[i]!='\0' && t[i]!='\0')
{
if(t[i]-s[i]<=0)
{
return -1;
}
else if(t[i]-s[i]!=diff)
{
return -1;
}
}
return diff;
}
int main()
{
int d = 0;
char s[]= "abc";
char t[]= "def"; // s=plain text and t=cipher text
d = encryption_check(s,t);
printf("%d",d);
return 0;
}
encryption_check()返回密文和纯文本之间的差异。 由于某些原因,这给分割带来了错误。 我也想知道如何将随机(非固定)长度的字符串传递给encryption_check()。 谢谢:)
答案 0 :(得分:1)
如果没有深入了解encryption_check
实际应该做什么的细节并保持简短,则while
循环将不会终止,因为您的i
设置为{{ 1}}。
在第一次运行时,0
和s[0] = 'a'
如此t[0] = 'd'
,因此t[0] - s[0] = 3
中的条件将为while
。在随后的运行中,因为您没有迭代true
,所以循环不会停止。
要解决此问题,只需添加i
,如下所示:
i++