回到「13. 額外語法 (Extra syntax)」
上一頁
讀取檔案「in.txt」並同時輸出其內容:
#include<cstdio> int main() { FILE *file_reader=fopen("in.txt","r"); for(char c;fscanf(file_reader,"%c",&c)==1;) { printf("%c",c); } return 0; }
輸出結果:可以發現黑色視窗上輸出的內容就是「in.txt」的內容 |
輸入3個檔名,依據輸入的檔名讀取那3個檔案並同時輸出其內容:
#include<cstdio> void ReadFile() { char file_name[1000]; scanf("%s",file_name); FILE *file_reader=fopen(file_name,"r"); for(char c;fscanf(file_reader,"%c",&c)==1;) printf("%c",c); printf("Finish reading %s!\n",file_name); } int main() { ReadFile(); ReadFile(); ReadFile(); return 0; }
可以隨時決定要從哪一個檔案讀取資料 (fscanf) 或者直接從黑色視窗取得輸入 (scanf) |
將「1+2+3+......+100」的完整計算過程寫入到檔案「out.txt」:
#include<cstdio> int main() { FILE *file_writer=fopen("out.txt","w"); int ans=1; for(int i=2;i<=100;i++) { fprintf(file_writer,"%d+%d=%d\n",ans,i,ans+i); ans=ans+i; } return 0; }
計算過程這麼多,當然請程式來幫忙產生啊XD |
將「1+2+3+......+10000」的完整計算過程寫入到檔案「process.txt」,並將結果寫入到檔案「result.txt」且輸出到黑色視窗:
#include<cstdio> int main() { FILE *process_file=fopen("process.txt","w"); int ans=1; for(int i=2;i<=10000;i++) { fprintf(process_file,"%d+%d=%d\n",ans,i,ans+i); ans=ans+i; } FILE *result_file=fopen("result.txt","w"); fprintf(result_file,"The result is %d\n",ans); printf("The result is %d\n",ans); return 0; }
計算過程太多了,不想輸出到黑色視窗,寫入檔案是另外一種選擇~ 計算完成後會同步在黑色視窗和另外一個檔案裡面顯示計算結果 |
當然,檔案處理還包刮「刪除、移動或重新命名」等操作
刪除「process.txt」後將「result.txt」重新命名為「result-renamed.txt」:
#include<cstdio> int main() { remove("process.txt"); rename("result.txt","result-renamed.txt"); return 0; }
如果程式失控產生上千個檔案,可以自己再用程式把它們刪光光 |
如果需要更進階的檔案管理功能 (例如遍歷整個資料夾下有哪些檔案或資料夾),請自行google,因為小莫自己也還沒打算研究透徹XD
但也別失望~
以下提供小莫之前研究的結果,目前當作小工具給自己使用,這份程式碼的功能是「遞迴刪除所在資料夾內所有副檔名為『.exe』(應用程式) 的檔案」,所以請謹慎小心地使用 (或研究):
#undef UNICODE #include<windows.h> #include<cstdio> #include<iostream> #include<string> using namespace std; int CNT=0; int GetAllgpxFilepathFromfolder(char* Path) { char szFind[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFind,Path); strcat(szFind,"\\*.*"); HANDLE hFind=FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind)return -1; do { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(strcmp(FindFileData.cFileName,".")!=0 && strcmp(FindFileData.cFileName, "..")!=0) { char szFile[MAX_PATH] = {0}; strcpy(szFile,Path); strcat(szFile,"\\"); strcat(szFile,FindFileData.cFileName); GetAllgpxFilepathFromfolder(szFile); } } else { string name=FindFileData.cFileName; if(name.size()<4||name.substr(name.size()-4)!=string(".exe"))continue; printf("%d: ",++CNT); name=string(Path)+"\\"+name; remove(name.c_str()); printf("%s\n",name.c_str()); } }while(FindNextFile(hFind,&FindFileData)); FindClose(hFind); return 0; } int main() { GetAllgpxFilepathFromfolder(new char[2]{'.','\0'}); system("pause"); return 0; }
下一頁
感謝:
(版權所有 All copyright reserved)
沒有留言:
張貼留言
歡迎留言或問問題~
若您的留言中包含程式碼,請參考這篇
如果留言不見了請別慌,那是因為被google誤判成垃圾留言,小莫會盡快將其手動還原
注意:只有此網誌的成員可以留言。