在文件中搜索关键字c

时间:2014-07-13 11:35:44

标签: c file pointers

我一直在尝试创建一个在文件中搜索特定单词的函数...我的程序编译,但它的执行在某些时候终止... 功能是:

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")

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

如果在您打印"1""2"之间发生某处,则应该很容易找到,因为那里只有一个声明。

很容易找到:

printf("%s",*(c2+k));

要求printf函数打印字符串,但使用取消引用运算符传递单个字符。当printf将该单个字符视为指向字符串的指针时,这会导致undefined behavior