我想編程一個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
這似乎是你缺少一個字符串終止符。請張貼一些相關的代碼,否則這將很難回答。 –