c言語ファイル操作フローで起こりやすいエラー
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
fp=fopen("E:\\Recent Files\\test.txt","r");
// w , ,
// ,
if (!fp)
{
printf ("can't find the files
.");
exit(1);// ,
system("pause");
}
char ch;
while ((ch=fgetc(fp))!=EOF)
fputc(ch,stdout);
//while ((ch=fgetc(stdin))!=EOF)
// fputc(ch,stdout);
fclose(fp);
system("pause");
return 0;
}
私たちが注釈したように、このモードは間違いを書かないようにしなければなりません.
#include <stdio.h>
#include <iostream>
using namespace std;
#include <stdlib.h>
int main()
{
FILE *fp1,*fp2;
char buffer[105];
fp1=fopen("E:\\Recent Files\\test.txt","w");
//fp2=fopen("E:\\Recent Files\\cherry.txt","w");
cout<<"11111111fp1="<<fp1<<endl;
if (NULL==fp1)
{
printf ("test cannt open
");
exit(1);
}
char ch;
while ((ch=fgetc(stdin))!='
')
{
fputc(ch,fp1);
}
//fclose(fp1);
cout<<"222222fp1="<<fp1<<endl;
system("pause");
return 0;
}
ここにはfclose()はありません.だからこの書類を書くときは成功できません.
ここの原因は私も具体的にソースコードを見ることができることを知りません
fopen後fcloseなし
このファイルはずっと開かれてプログラムが終了することを知っていて、プログラムが終了するまでファイル記述子が占有され、fcloseでなくfopenが続くと記述子が漏洩します.
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp1,*fp2;
char buffer[105];
fp1=fopen("E:\\Recent Files\\test.txt","w");
fp2=fopen("E:\\Recent Files\\cherry.txt","w");
if (NULL==fp1)
{
printf ("test cannt open
");
exit(1);
}
if (NULL==fp2)
{
printf ("cherry cannt open
");
exit(1);
}
char ch;
while ((ch=fgetc(stdin))!='
')
{
fputc(ch,fp1);
}
fclose(fp1);
fp1=fopen("E:\\Recent Files\\test.txt","r");
while ((ch=fgetc(fp1))!=EOF)//while (!feof(fp1))
{
fputc(ch,fp2);
}
fclose(fp2);
fp2=fopen("E:\\Recent Files\\cherry.txt","r");
while ((ch=fgetc(fp2))!=EOF)
{
fputc(ch,stdout);
}
fclose(fp1);
fclose(fp2);
system("pause");
return 0;
}
操作が完了するたびにファイルを閉じる推定はポインタの問題です
これはまだはっきりしていない