请问我这个程序有什么问题呢,为什么我的TC2.0一编译就自动关掉或者提示出错,这个是一个字符串加密程序的

#include<string.h>#include<stdio.h>#include<math.h>main(){char *s="asdfgasdfg",*p,*t,*g,*u,*k;int i,l,j;clrscr();l=strlen(s);strcpy(p,s+l/2);for(i=0;i<l/2;i++){*(t+i)=*(s+i);}strrev(p);strrev(t);strcat(p,t);j=0;printf("p=%s尀n",p);do{if(l-j>=5){for(i=j;i<j+5;i++)*(u+i)=*(p+i);j=j+5;if(*(t+0)<✀@✀)*(u+0)=*(u+0)^106;if(*(t+1)<✀@✀)*(u+1)=*(u+1)^119;if(*(t+2)<✀@✀)*(u+2)=*(u+2)^99;if(*(t+3)>=✀@✀)*(u+3)=*(u+3)^48;if(*(t+4)>=✀@✀)*(u+4)=*(u+4)^49;strcat(g,u);}else {for(i=j;i<l-j;i++)*(k+i)=*(p+i);j=l;if(*(t+0)<✀@✀)*(k+0)=*(k+0)^106;if(*(t+1)<✀@✀)*(k+1)=*(k+1)^119;if(*(t+2)<✀@✀)*(k+2)=*(k+2)^99;if(*(t+3)>=✀@✀)*(k+3)=*(k+3)^48;strcat(g,u);}}while(j=l);printf("%s",g);}仍然是崩溃了你这个只到了前面那个PRINTF,后面异或处理完的PRINTF就没了
2026年09月28日 09:39
有1个网友回答
网友(1):

//我在vc上简单帮调了一下,不太清楚你要干什么所以只调了些基本的崩溃的地方
//主要就是*p,....这些都是指针,并没有真实的空间,所以,没东西可存.
//我全初步分了15个空间,楼主根据自己的想法,不够的再多分点就行了.

#include
#include
#include
void main()
{
char *s="asdfgasdfg";
int i,l,j;
char p[15] = {0};//p没有分配空间,存不了s+l/2,也不能cat,要是用*p的话,下面就要malloc,我改成静态分配的了
char t[15] = {0};//同上
char u[15] = {0};//同上
char g[15] = {0};//同上
char k[15] = {0};//同上
// clrscr(); //我在VC上调的,这个没有,TC的话你你试的时候打开看看吧
l=strlen(s);
strcpy(p,s+l/2);
for(i=0;i strrev(p);strrev(t);
strcat(p,t);
j=0;printf("p=%s\n",p);
do{
if(l-j>=5)
{
for(i=j;i *(u+i)=*(p+i);
j=j+5;//这个是不是在for里哪??要是的话得加大括号;下面分支同理

if(*(t+0)<'@')
*(u+0)=*(u+0)^106;
if(*(t+1)<'@')
*(u+1)=*(u+1)^119;
if(*(t+2)<'@')
*(u+2)=*(u+2)^99;
if(*(t+3)>='@')
*(u+3)=*(u+3)^48;
if(*(t+4)>='@')
*(u+4)=*(u+4)^49;
strcat(g,u);
}
else
{
for(i=j;i *(k+i)=*(p+i);
j=l;
if(*(t+0)<'@')*(k+0)=*(k+0)^106;
if(*(t+1)<'@')*(k+1)=*(k+1)^119;
if(*(t+2)<'@')*(k+2)=*(k+2)^99;
if(*(t+3)>='@')*(k+3)=*(k+3)^48;
strcat(g,u);
}

}while(j=l);
printf("%s",g);
}