#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\n."); 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\n"); exit(1); } char ch; while ((ch=fgetc(stdin))!='\n') { fputc(ch,fp1); } //fclose(fp1); cout<<"222222fp1="<<fp1<<endl; system("pause"); return 0;}
這裡我們沒有fclose(); 所以在寫這個檔案時 不能成功
這裡 原因我也不清楚 具體的可以看原始碼吧
fopen後沒fclose
那這個檔案會一直被開啟知道程式退出,會有一個檔案描述符被一直佔用直到程式退出,如果一直fopen而不fclose則會導致描述符泄漏。
#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\n"); exit(1); } if (NULL==fp2) { printf ("cherry cannt open\n"); exit(1); } char ch; while ((ch=fgetc(stdin))!='\n') { 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;}
每一次操作完 就要進行關閉檔案 估計是指標的問題
這個暫時 還沒有搞清楚