fprintf导致控制台应用程序崩溃

时间:2013-06-27 19:52:05

标签: c debugging memory-management printf

我正在使用fprintf调试问题。我希望你们能给我一些建议,或者即使这是一个简单的问题,然后帮我识别它。我的代码如下。

        while(fgets(buffer, 500, filep) != NULL){
        //printf("%d\n", i);
        strcpy(result, buffer);
        result = strtok(result, " ,()[]\'");
        //printf("%s\n", buffer);
        while(result != NULL){
            //printf("%s\n", buffer);
            if(stricmp(result, strng) == 0){
                //printf("found!!\n");
                printf("%s\n", buffer);
                fprintf(Compilation, "%s", buffer);
                //printf("%s", result);
            }
            result = strtok (NULL, " ,()[]\'");
        }
        result = (char*)realloc(result, 500);
    }

我知道这很糟糕,也许甚至不是最好的方法,但它就是我所拥有的。缓冲区和结果最初是1024字节的malloced。解析每一行后,如果在该行中找到一个字符串,则整行将附加到一个新文件中。我知道记忆很乱,所以我还在努力收紧它。我的问题是fprintf将运行多行,并且偶尔会遇到一行并使应用程序崩溃。当我使用printf行在IDE(VSexpress2012)中调试此问题时,我发现printf实际上在fprintf停止打印到文件后打印了许多行。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您无法将任意指针传递到realloc。问题是strtok修改了result指针,然后您尝试使用此指针reallocrealloc需要从malloc返回的原始指针。