2011-04-09 9 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); 

왜이 회선이 충돌하고 있습니까? 이 파일에 count을 인쇄 할 때 충돌이 발생 _debugger_hook_dummy = 0;

말한다 라인에 dbghook.c의 끝,하지만 난 그 인쇄 밖으로 가지고가는 경우에 마지막 문을 인쇄 할 때 시스템이 손상됩니다. 첫 번째는 내가 MSVS2008에 관해서는

+0

OS, 컴파일러

 f = fopen(path, mode); 

, 옵션을 대체? 여기에는 텔레 패스가 없습니다. – iehrlich

+0

죄송합니다. Windows, VS2010 – user696977

+0

'buffer1','buffer2','HEIGHT' 및'WIDTH'는 무엇입니까? –

답변

1

1 단계 :

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

hmmm ... "너무 많은 파일 열기" – user696977

+0

두 번째 단계 : 일부 파일 닫기 :) –

+0

매우 이상한데, 특히 시각적 인 스튜디오가 그 당시에 열린 유일한 사건이기 때문에, 프로그램 그 자체 외에. – user696977

0

는, 모두가 잘 작동 "열려있는 파일이 너무 많습니다"을 얻을, 나는 오류를 인쇄 할 때 ...하지만, 잘

를 인쇄 할 것으로 보인다. 물론 '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

+0

@jonsca : 너무 수분이 많습니다 – iehrlich