在C中写入文件时出现问题
我试图用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) {
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 );
}