错误:堆叠变量' ptemp'被腐败了

时间:2015-06-24 14:52:06

标签: c

我收到此错误:

  

(变量堆栈周围' ptemp'已损坏。)

我的代码

list crea_lista(list l, FILE *fp, FILE *fp2){

    char ptemp[11];
    char ptemp2[11];
    element el;
    el.numero_volte=1;

    while(!feof(fp)){

        fscanf(fp,"%s",ptemp);

        while(!feof(fp2)){

            fscanf(fp2,"%s",ptemp2);

            if(strcmp(ptemp,ptemp2)==0){


                el.numero_volte=el.numero_volte+1;


            }

        }

        strcpy(el.parola,ptemp);
        l=insord(l,el);
        el.numero_volte=1;
        fflush(stdin);

        rewind(fp2);

    }

    return l;

}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你用内存初始化了ptemp 11个字符。如果从fp复制的字符串大于11个字符,fscanf将通过ptemp写入其他内存。修复,要么只复制11个字符,要么将ptemp的大小增加到您正在读取的字符串的最大大小(如果已知)。