C程序中的分段错误


#include<stdio.h>
int encryption_check(char* s , char* t)
{
printf("%s",s);
int i=0 , diff = t[0] - s[0];
while(s[i]!='' && t[i]!='')
{
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((。

如果不详细了解您的encryption_check实际应该做什么并保持简短,那么您的while循环无法终止,因为您的i在设置为0后永远不会改变。

在第一次运行时,s[0] = 'a't[0] = 'd'如此t[0] - s[0] = 3,因此while的条件将true.在随后的运行中,由于您不迭代i,循环不会停止。

要修复它,只需添加i++,如下所示:

while(s[i]!='' && t[i]!='') {
if(t[i]-s[i]<=0) {
return -1;
} else if(t[i]-s[i]!=diff) {
return -1;
}
i++;
}

相关内容

  • 没有找到相关文章

最新更新