我想编程一个encrptor和解密程序。我的问题是我首先赋值的指针仍然与第二个值相同。我试图使用免费的,但问题仍然是一样的。 例如,我输入aslkdjlasc(样品只) 和输出将是: 的HelloWorld指针解引用,坏指针
我尝试再次运行该程序,然后I型daskjda 输出将会像 doctorxRLD
RLD是来自这个指针的过去值。它应该只有7个字符,但由于helloworld是10,所以前7个字母被加密代替,但最后3个字符仍然被打印。
我该怎么办?
更新:这里是部分代码:
void encrypt(char *crypt)
{
char *plaintext,*encryption,slash=0x2F;
int i,j,k,flags,f;
encryption=(char *)malloc(sizeof(int));
plaintext=(char *)malloc(sizeof(int));
printf("Enter plaintext, spaces,commas,and dots should be represented as /:\n");
scanf("%s",&*plaintext);
for(i=0;i<strlen(plaintext);i++)
{
j=1;flags=0;
while(j<53 && flags==0)
{
if(plaintext[i]==slash)
{
encryption[i]=slash;
flags=1;
}
if(plaintext[i]==crypt[j])
{
encryption[i]=crypt[j-1];
flags=1;
}
k=j+2;
j=k;
}
}
printf("%s",encryption);
free(encryption);
free(plaintext);
getch();
}
这里是主要的
main()
{
char c;
int timer;
char crypt[53]="***i have hidden my encryption code***";
clrscr();
printf("Press e to encrypt, d to decrypt, ESC to exit.\n");
c=getch();
switch(c)
{
case(0x1b):
exit(0);
break;
case(0x64):
decrypt(crypt);
break;
case(0x65):
encrypt(crypt);
break;
default:
printf("INVALID. FORCE EXIT IN 3 SEC0NDS.");
delay(3000);
exit(0);
}
getch();
}
'free()'不会将指针设置为NULL,请在此处添加您的代码 –
我们无法告诉您如何修复我们看不到的代码。你做错了什么,但是如果没有相应的代码,就不可能说出什么。 – Mat
这似乎是你缺少一个字符串终止符。请张贴一些相关的代码,否则这将很难回答。 –