注意:
1、由於C是緩沖寫 所以要在關閉或刷新后才能看到文件內容
2、電腦處理文本型和二進制型的不同 (因為電腦只認識二進制格式)
方法一 :用C++的方法
// 寫文件
ofstream ofs("4.txt"); // 如果我們要用這個類 我們就需要先#include <fstream.h> ofs.write("hello",strlen("hello" ) );
ofs.close();
//讀文件
ifstream ifs("4.txt"); //創建對象
char ch[100];
memset(ch,0,100);//把讀文件緩沖全部設置為0
ifs.read(ch,100);// 讀文件
ifs.close();
MessageBox(ch); //顯示
方法二:用 win32 CreatFile
//------------------------寫文件----------------
// 打開創建文件 獲得句柄 HANDLE hFile; hFile=CreateFile("5.txt", GENERIC_WRITE,//對文件的操作 0, // 共享的方式 0 不能共享 NULL,// 安全屬性 用缺省的 CREATE_NEW, //創建一個新的文件 FILE_ATTRIBUTE_NORMAL, // 文件屬性 NULL); // 模板文件的句柄 //寫入數據 DWORD dwWrites; WriteFile(hFile, //文件句柄 "http://www.sunxin.org", //指針 向文件寫入的數據 strlen("http://www.sunxin.org"), // 相要寫的數據長度 &dwWrites, //實際寫入的長度 NULL); //同步IO或是異步IO的方式 如果是同步 程序會被掛起一直到讀寫完成 CloseHandle(hFile);
讀文件
//---------------------讀文件----------------
// 打開文件 獲得句柄
HANDLE hFile; hFile=CreateFile("5.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING,//已經存在的 FILE_ATTRIBUTE_NORMAL, NULL); // 讀文件 char ch[100]; DWORD dwReads; ReadFile(hFile,//句柄 ch, //接收緩存 100, //想要讀的數 &dwReads, //實際讀到的個數 NULL); ch[dwReads]=0; //把讀到的最后一個數 設置為0 表示文件結束 CloseHandle(hFile); MessageBox(ch);
方法三: 用MFC
寫文件
CFile file("6.txt", CFile::modeCreate | CFile::modeWrite); file.Write("http://www.sunxin.org",strlen("http://www.sunxin.org")); file.Close();
讀文件
CFile file("6.txt",CFile::modeRead); char *pBuf; DWORD dwFileLen; //定義存儲文件長度的變量 dwFileLen=file.GetLength(); pBuf=new char[dwFileLen+1]; pBuf[dwFileLen]=0; //把最后一位一0結尾 表示文件結束 file.Read(pBuf,dwFileLen); file.Close(); MessageBox(pBuf);
方法四: C語言中文件的讀取和寫入
在C語言中寫文件
//獲取文件指針
FILE *pFile = fopen("1.txt", //打開文件的名稱 "w"); // 文件打開方式 如果原來有內容也會銷毀 //向文件寫數據
fwrite ("hello", //要輸入的文字 1,//文字每一項的大小 以為這里是字符型的 就設置為1 如果是漢字就設置為4 strlog("hello"), //單元個數 我們也可以直接寫5 pFile //我們剛剛獲得到的地址 );
//fclose(pFile); //告訴系統我們文件寫完了數據更新,但是我們要要重新打開才能在寫
fflush(pFile); //數據刷新 數據立即更新
在C語言中讀文件
FILE *pFile=fopen("1.txt","r"); //獲取文件的指針 char *pBuf; //定義文件指針 fseek(pFile,0,SEEK_END); //把指針移動到文件的結尾 ,獲取文件長度 int len=ftell(pFile); //獲取文件長度 pBuf=new char[len+1]; //定義數組長度 rewind(pFile); //把指針移動到文件開頭 因為我們一開始把指針移動到結尾,如果不移動回來 會出錯 fread(pBuf,1,len,pFile); //讀文件 pBuf[len]=0; //把讀到的文件最后一位 寫為0 要不然系統會一直尋找到0后才結束 MessageBox(pBuf); //顯示讀到的數據 fclose(pFile); // 關閉文件