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

标签 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 字节。解析每一行后,如果在该行中找到一个字符串,则将整行附加到一个新文件中。我知道内存很乱,所以我仍在努力收紧它。我的问题是 fprintf 将运行多行,有时它会遇到一行并使应用程序崩溃。当我在 IDE (VSexpress2012) 中使用 printf 行调试此问题时,我发现 printf 在 fprintf 停止打印到文件后实际上打印了很多行。任何帮助将不胜感激。

最佳答案

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

关于c - fprintf 导致控制台应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352035/

相关文章:

memory-management - Swift 5 - 模拟器启动时显示白屏 - 仪器

c - C中额外大括号的实际使用

c - 如何在 Linux 中的 XImage 对象上绘制文本

python - 如何可重复地调试依赖于随机算法的程序?

C++ 运算符重载和继承

ios - 强制释放以 strong 声明的属性

process - 监视进程是否已在 C 中终止

带有 strncmp 的 Linux 上的 C 段错误

android - 在 Eclipse 中不打断点调试 Android Junit 测试

java - 集合中的内存消耗