标题:[求助]运行结果出现null pointer assignment,怎么办?
取消只看楼主
海洋天使
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-5-14
 问题点数:0 回复次数:0 
[求助]运行结果出现null pointer assignment,怎么办?

我编写了关于串的程序,想要实现在主串中是否有字符串与子串匹配的功能。运行的结果正确,可是每次结果后面都有null pointer assignment,我检查一晚上还是查不出在哪里出错,不知有哪位好心人帮我解答。

程序代码:
#include<malloc.h>
#include<string.h>
#include<stdio.h>

typedef struct
{char *str;
int length;
}string;

strassign(string *s,char *chars)
{int i,j;

if(s->str) free(s->str);
i=strlen(chars);
if(!i)
{s->str=0;s->length=0;}
else
{s->str=(char *)malloc(i*sizeof(char));
if(!s->str) printf("error");
for(j=0;j<i;j++)
s->str[j]=chars[j];
s->length=i;
}
}

int indexFL(string *s,string *t,int pos)
{int i,j,k;
int slength,tlength;
char patstartchar,patendchar;
slength=s->length;tlength=t->length;
i=pos;
patstartchar=t->str[0];
patendchar=t->str[t->length-1];
while(i<=slength-tlength)
{if(s->str[i]!=patstartchar) ++i;
else if(s->str[i+tlength-1]!=patendchar) ++i;
else
{k=1;j=1;
while(j<tlength-1 && s->str[i+k]==t->str[j])
{++k;++j;}
if(j==tlength-1) return i+1;
else ++i;
}
}
return 0;
}

void strprint(string *s)
{int i;
for(i=0;i<s->length;i++)
printf("%c",s->str[i]);
printf("\n");
}

main()
{string *s,*t;
char char1[100],char2[100];
int pos;
printf("\nInput father string:");
gets(char1);
strassign(s,char1);
printf("\nInput child string:");
gets(char2);
strassign(t,char2);
printf("\nPos=");
scanf("%d",&pos);
printf("\nThe father string:");
strprint(s);
printf("\nThe child string:");
strprint(t);
printf("\nThe position:%d",indexFL(s,t,pos));
}

搜索更多相关主题的帖子: assignment pointer null 结果 运行 
2006-05-14 00:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-64019-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016103 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved