请问我这个程序有什么问题呢,为什么我的TC2.0一编译就自动关掉或者提示出错,这个是一个字符串加密程序的
#include<string.h>#include<stdio.h>#include<math.h>main(){char*s="asdfgasdfg",*p,*t,*...
#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就没了 展开
#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就没了 展开
1个回答
展开全部
//我在vc上简单帮调了一下,不太清楚你要干什么所以只调了些基本的崩溃的地方
//主要就是*p,....这些都是指针,并没有真实的空间,所以,没东西可存.
//我全初步分了15个空间,楼主根据自己的想法,不够的再多分点就行了.
#include<string.h>
#include<stdio.h>
#include<math.h>
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<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;//这个是不是在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<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);
}
//主要就是*p,....这些都是指针,并没有真实的空间,所以,没东西可存.
//我全初步分了15个空间,楼主根据自己的想法,不够的再多分点就行了.
#include<string.h>
#include<stdio.h>
#include<math.h>
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<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;//这个是不是在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<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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询