Проблема с записью в файл в C - PullRequest
2 голосов
/ 10 апреля 2011

Я пытаюсь записать некоторую информацию в файл на 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);

Почему эта линия рушится? Это заканчивается в dbghook.c в строке, которая говорит _debugger_hook_dummy = 0;

Происходит сбой при печати count в файл, но если я вычеркну этот отпечаток, произойдет сбой при печати последнего оператора. Первый, кажется, печатается нормально, хотя ..

Когда я печатаю ошибку, я получаю «Слишком много открытых файлов»

Ответы [ 2 ]

1 голос
/ 10 апреля 2011

1-й шаг: заменить

f = fopen( path, mode );

с

f = fopen( path, mode );
if( f == NULL ) {
    perror( path );
    exit( EXIT_FAILURE );
}
0 голосов
/ 10 апреля 2011

Что касается MSVS2008, все отлично работает. Конечно, цикл 'for' должен был быть прокомментирован, поскольку он использует глобальные переменные и определяет.

Во-первых, вы должны попытаться сделать что-то вроде

#include <iostream>

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

    f = fopen("file.abc", "w");   
    fprintf(f, "count: %d\n", count);  
    fclose(f);
}

и посмотри, что получится.

...