我一直在尝试创建一个在文件中搜索特定单词的函数...我的程序编译,但它的执行在某些时候终止... 功能是:
void search(struct word *w,FILE *f)
{
char *c,*c2;
int i,j,n,k,l;
c=(char*)malloc(120*sizeof(char));
c2=(char*)malloc(20*sizeof(char));
while(f!=NULL)
{
j=0;
i=1;
fscanf (f,"%[^\n]%*c",c);
printf("%s",c);
n=strlen(c);
k=0;
l=j;
while(l<=n && *(c+j)!=' ')
{
*(c2+k)=*(c+j);
printf("1");
printf("%s",*(c2+k));
printf("2");
k=k+1;
l=l+1;
}
if(w->name==c2)
{
insert(i,j+1,name,&w);
}
else
{
if(l<n)
j=l+1;
k=0;
c2=(char*)malloc(20*sizeof(char));
l=j;
}
i=i+1;
j=0;
}
}
主要功能是:
int main()
{
FILE *f;
struct word *s;
s=(struct word*)malloc(sizeof(struct word));
struct word *hashtable[100];
s->name=(char*)malloc(20*sizeof(char));
scanf("%s",s->name);
f=fopen("fileA.txt","rt");
char *name="fileA.txt";
search(s,f);
printresults();
system("pause");
return(0);
}
结构是:
struct position
{
char *filename;
int line;
int place;
struct position *next;
};
struct word
{
char *name;
struct word *right;
struct word *left;
struct position *result;
};
该计划终止于printf("1")
和printf("2")
。
我的代码出了什么问题?
答案 0 :(得分:2)
如果在您打印"1"
和"2"
之间发生某处,则应该很容易找到,因为那里只有一个声明。
很容易找到:
printf("%s",*(c2+k));
要求printf
函数打印字符串,但使用取消引用运算符传递单个字符。当printf
将该单个字符视为指向字符串的指针时,这会导致undefined behavior。