2011-04-09 78 views
2

我试图在C中写入一些信息到一个文件,并且从未遇到过问题。但是,现在,在将变量的内容写入文件时似乎会中断。这是我的。写入文件的问题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的行

count打印到文件时发生崩溃,但是如果我取出该打印件,打印最后一条语句时它会崩溃。第一个,似乎当我打印错误被印刷精美,虽然..

,我得到“打开的文件太多”

+0

操作系统,编译器,选择?这里没有传感器。 – iehrlich 2011-04-09 20:05:59

+0

对不起。 Windows,VS2010 – user696977 2011-04-09 20:06:20

+0

什么是'buffer1','buffer2','HEIGHT'和'WIDTH'? – 2011-04-09 20:08:37

回答

1

第1步:更换

 
f = fopen(path, mode); 

 
f = fopen(path, mode); 
if(f == NULL) { 
    perror(path); 
    exit(EXIT_FAILURE); 
} 
+0

hmmm ...“太多打开文件” – user696977 2011-04-09 20:18:49

+0

第2步:关闭一些文件:) – 2011-04-09 20:20:25

+0

很奇怪,特别是因为visual studio是当时唯一打开的东西,除了程序本身。 – user696977 2011-04-09 20:21:12

0

至于MSVS2008,一切工作正常。当然,'for'循环将被使用全局变量并进行定义。

首先,你应该尝试做这样的事情

#include <iostream> 

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

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

,看看会发生什么。

+0

主要应该总是返回一个int – jonsca 2011-04-09 20:46:45

+0

@jonsca:so juicy – iehrlich 2011-04-09 21:38:24