在C中写入文件时出现问题

在C中写入文件时出现问题,c,io,C,Io,我试图用C语言将一些信息写入一个文件,但以前从未遇到过问题。但是,现在在将变量的内容写入文件时,它似乎会中断。这是我的 int i, count = 0; FILE *f; int _x, _y, _z, _x2, _y2, _z2; for (i = 0; i < HEIGHT * WIDTH*3; i+= 3) { if (buffer1[i/3] < MAGIC_VALUE) {

我试图用C语言将一些信息写入一个文件,但以前从未遇到过问题。但是,现在在将变量的内容写入文件时,它似乎会中断。这是我的

    int i, count = 0;
    FILE *f;
    int _x, _y, _z, _x2, _y2, _z2;

    for (i = 0; i < HEIGHT * WIDTH*3; i+= 3)
    {
        if (buffer1[i/3] < MAGIC_VALUE)
        {
            count++;
        }

        if (buffer2[i/3] < MAGIC_VALUE)
        {
            count++;
        }
    }

    printf("Count = %d\n", count); // prints correctly...
    f = fopen("file.abc", "w");
    fprintf(f, "lots\n of\n text\n");

    fprintf(f, "count: %d\ntext \ntext y\ntext text text", count); // crashes here
    fprintf(f, "\nend");

    fclose(f);
inti,计数=0;
文件*f;
整数x,y,z,x2,y2,z2;
对于(i=0;i<高度*宽度*3;i+=3)
{
if(缓冲区1[i/3]<魔法值)
{
计数++;
}
if(缓冲区2[i/3]
为什么这条线会崩溃?它在dbghook.c中表示
\u debugger\u hook\u dummy=0的行结束

在将
count
打印到文件时会发生崩溃,但如果我取消打印,则在打印最后一条语句时会崩溃。不过,第一张似乎印得很好


当我打印错误时,我得到了“太多打开的文件”

对于MSVS2008,一切正常。当然,“for”循环需要注释,因为它使用了全局变量和定义

首先,你应该试着做一些类似的事情

#include <iostream>

void main()
{
    int count = 0;
    FILE *f;

    f = fopen("file.abc", "w");   
    fprintf(f, "count: %d\n", count);  
    fclose(f);
}
#包括
void main()
{
整数计数=0;
文件*f;
f=fopen(“file.abc”,“w”);
fprintf(f,“计数:%d\n”,计数);
fclose(f);
}
然后看看会发生什么。

第一步:更换

f = fopen( path, mode ); f=fopen(路径、模式); 与

f=fopen(路径、模式); 如果(f==NULL){ 佩罗尔(路径); 退出(退出失败); }
操作系统、编译器、选项?这里没有心灵感应。什么是
buffer1
buffer2
HEIGHT
WIDTH
?buffer1/2是一排短裤。高度和宽度为常量整数。是否检查文件是否实际打开?文件未打开。即使我将名称更改为不存在的模糊名称,也会发生这种情况。第二步:关闭某些文件:)非常奇怪,特别是因为除了程序本身之外,visual studio是当时唯一打开的东西。关闭文件似乎没有任何作用。甚至重新启动系统,娜达。太多打开的文件问题没有解决,但你帮我缩小了范围。谢谢。@user6977关闭文件并不意味着在其他程序中关闭它们。您的程序有太多打开的文件。可能您在某个地方有一个循环,在该循环中调用fopen()但未能调用fclose(),或者您只是试图同时打开太多的文件。main应始终返回int f = fopen( path, mode ); if( f == NULL ) { perror( path ); exit( EXIT_FAILURE ); }