读书人

这个程序你们运作有错么

发布时间: 2013-11-19 22:55:29 作者: rapoo

这个程序你们运行有错么
大家看看你们这个程序运行会出错么

#include "stdafx.h"


#include "stdio.h"

void Get_Next(char *T,int *next)
{
int i=1,j=0;
next[0]=0;
next[1]=0;
char *p=T;
while (*T)
{
//这里的T 在自己加 所以要多一个P
//因为题目要求不能求子串的长度
//然后这里的字符串给近来从0开始 但是这里计算的是从1开始
if(j==0||p[j-1]==p[i-1])
{
i++;
j++;
next[i]=j;
T++;
}
else
j=next[j];

}
}
int main(int argc, char* argv[])
{
//下面的代码是子串和主串做比较的一部分
char a[10]="abaabc";
char b[40]="abaaabaabcababaabc";
char *p=b;
printf("%c",*p);
printf("%ld",p);
//printf("%c",*q);
int next[7];
int i=0;
int count=0;
Get_Next(a,next);
printf("%ld",p);//我的问题出在这里,每次运行到这里P就没有值了,但是前面的根本没改变过,函数传参也没用他 ,纳闷几天了
printf("%c",*p);
return 0;
}


我用的编译环境是VC 60 控制台
高分求大神赐教!
[解决办法]
引用:

//%p打印地址!printf格式化输出函数!
printf("%p",p);

+1

不过楼主的代码有其他问题,next数组有溢出,导致栈被破坏无法正常退出程序的问题。

读书人网 >C语言

热点推荐