C程序中的分段错误

时间:2018-09-08 15:30:00

标签: c encryption segmentation-fault

#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()。 谢谢:)

1 个答案:

答案 0 :(得分:1)

如果没有深入了解encryption_check实际应该做什么的细节并保持简短,则while循环将不会终止,因为您的i设置为{{ 1}}。

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

要解决此问题,只需添加i,如下所示:

i++