導航:首頁 > 文件教程 > cfile寫文件結束

cfile寫文件結束

發布時間:2023-01-25 18:45:43

1. MFC CFile寫文件問題

我也不喜歡用CFile,給你一段類似的代碼,你稍微改下就可以了

.......
{
FILE * fp;
CString filename="out.dat";
fp=fopen(filename,"a");
for (int i=0;i<5;i++)
{
fprintf(fp,"%d ",i);
}
fprintf(fp," ");
fclose(fp);
}
......

每次寫文件不會擦除之前的數據,就是說這個程序你運行3次,得到.dat文件里的結果

0 1 2 3 4

0 1 2 3 4

0 1 2 3 4

2. CFile怎樣判斷是否讀到文件結束了

1,先獲取內容長度,在搜索\r\n得到最後一行位置,在把指針調整到那裡。
2,讀文件版是有個文件指針,調用權Read時文件指針制動向前移動。
3,下次再調用是是接著上次文件指針讀。mile.Read(sRead,2),第二個參數指定了最多讀幾個字元,自己指定了讀兩個字元。例如,
CFile fr;
...//打開文件
char readbuf[65535];
int n;
while((n = fr.Read(readbuf, 65535)) > 0)//讀文件的長度大於0,說明文件沒有結束,否則已經結束了
{
//操作
}

3. 使用CFile類讀取文件如何判斷文件結束

如果是用二進制方式讀取,那存放的緩沖應該用char類型或者Byte類型,你用unsigned short int類型肯定不回行啊,等讀取好了答後,要對這個緩沖進行解析,按照已知的位元組存放方式,將這個緩沖中的數據放到相應的類型中,這樣才能得到人看的懂的東西啊,這中間要用到位操作運算,比如第238位元組到第241位元組中放的是一個整型數據,那你就要先將238位元組中的數據賦給一個int,然後對int左移8位,然後將239中數據和int這個變數做或操作,這樣相當於int中有兩個位元組數據了,一次類推,直到把四個位元組數據都放進int型變數,這樣輸出這個int才是人看的懂的

4. VC寫文件

方法1:
try{
CFile f;
f.Open("D:/test.txt",CFile::modeWrite);
// char myBuf[1024]={'1','2','3','4'};//初始化4個
//memset(myBuf, '0', sizeof(txtBuf));
f.SeekToEnd();//用來標注寫入位置在最後 即在末尾寫入不覆蓋原有內容
// f.Write(&myBuf,4);//sizeof(myBuf)或1024或大於4會出現許多空格
f.Write("the end",sizeof("the end"));
f.Flush();
f.Close();
}catch(...){
MessageBox("未成功寫入");
}
方法2:使用CStdioFile CStdioFile 為CFile子類故可使用CFile所有方法
CStdioFile sf;
CString str="abcdef12345gg";
sf.Open("D:/test.txt",CFile::modeWrite);
sf.SeekToEnd();
sf.WriteString("1234567890");//CStdioFile 的方法
sf.Flush();
sf.Close();
備註:1:方法2 未加try catch 建議加上
2:方法1 先不要理開頭有//的行,那是我用來測試的
3: c++兼容c 可以試一試fopen fwrite等方法
本以為很簡單,有點高估自己啦,自己反倒學了不少知識

5. 怎麼在文件末尾寫數據我用CFile::SeekToEnd好像不行。

打開文件的方式中,有一種是在文件尾,寫新的數據
-------------------------------
MFC的話,你看是不是用這個
CFile::modeNoTruncate Combine this value with modeCreate. If the file being created already exists, it is not truncated to 0 length. Furthermore, if the file being created already exists, the underlying file pointer will point to the beginning of the file. This flag guarantees the file to open, either as a newly created file or as an existing file. This might be useful, for example, when opening a settings file that may or may not exist already. This option applies to CStdioFile as well.

6. MFC 的 CFile 文件讀寫

read讀取後文件指針移動是因為read內部實現的,你沒必要糾結,如果你只是要實現文件的分隔加合並,不需要分析文件內容,那應該很簡單,在打開文件時加上CFile::typeBinary 模式

7. C語言裡面的二進制文件的結束標志是什麼

1、可以使用feof函數來判斷二進制文件是否結束。

EOF是文本文件結束的標志。在文本文件中,數據是以字元的ASCⅡ代碼值的形式存放,普通字元的ASCⅡ代碼的范圍是32到127(十進制),EOF的16進制代碼為0xFF(十進制為-1),因此可以用EOF作為文件結束標志。當把數據以二進制形式存放到文件中時,就會有-1值的出現,因此不能採用EOF作為二進制文件的結束標志。為解決這一個問題,ASCI C提供一個feof函數,用來判斷文件是否結束。feof函數既可用以判斷二進制文件又可用以判斷文本文件。
2、常式:

#include<stdio.h>
intmain(void)
{
FILE*stream;
/*openafileforreading*/
stream=fopen("DUMMY.FIL","r");
/*readacharacterfromthefile*/
fgetc(stream);
/*checkforEOF*/
if(feof(stream))//使用feof函數檢查是否到達文件末尾
printf("Wehavereachedendoffile ");
/*closethefile*/
fclose(stream);
return0;
}

8. Cfile如何使用

文件讀寫的最普通的方法是直接使用CFile進行,如文件的讀寫可以使用下面的方法:
//對文件進行讀操作
char sRead[2];
CFile mFile(_T("user.txt"),CFile::modeRead);
if(mFile.GetLength()<2)
return;
mFile.Read(sRead,2);
mFile.Close();
//對文件進行寫操作
CFile mFile(_T("user.txt "), CFile::modeWrite|CFile::modeCreate);
mFile.Write(sRead,2);
mFile.Flush();
mFile.Close();
如果你要進行的文件操作只是簡單的讀寫整行的字元串,建議你使用CStdioFile,用它來進行此類操作非常方便,如下例。
CStdioFile mFile;
CFileException mExcept;
mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &mExcept);
CString string="I am a string.";
mFile.WriteString(string);
mFile.Close();

9. 如何判斷寫文件結束

這個問題太好解決了,有幾種方法

方法1,使用windows.h里的全局共享Mutex
如果是在windows裡面可以用創建Mutex的方法
即,第一個發送進程開始時就建立一個Mutex
然後開始寫文件,寫完文件然後刪除掉Mutex.

第二個進程一直創建一個和第一個進程相同的Mutex,由於是同名,肯定是創建失敗。如果失敗繼續嘗試並等待直到第一個進程刪除Mutex,則二號進程創建成功,就可以打開文件並發送了.

方法2 更簡單,加一個標志文件S,即第一個進程開始讀文件讀完文件後,創建一個特別的文件叫"c:\sign.txt".只要創建即可,不用寫任何東西.

進程二,一直嘗試打開"c:\sign.txt"由於文件不存在,則必定打開失敗.直到進程一完成工作,創建了 c:\sign.txt
.進程二才能打開成功,則意味著進程二可以發送文件了.
我的例子是用C++ 標准流fstream寫的.你也可以用c的
File 一樣來完成

方法1代碼:
進程1
#incle <windows.h>
int main()
{
HANDLE m_Mutex=CreateMutex(NULL, FALSE, "is_ok");

//寫文件..... 你的代碼

CloseHandle(m_Mutex);//刪除Mutex is_ok;
return 0;
}

進程2
#incle<windows.h>
int main()
{
do {
HANDLE m_Mutex=CreateMutex(NULL, FALSE, "is_ok");
Sleep (5000); //每5秒檢測一次
}while(GetLastError() == ERROR_ALREADY_EXISTS);
CloseHandle(m_Mutex);
//如果程序能執行到這里,代表進程一已經寫完文件了
//進程二,你的代碼寫在這里.
return 0;
}

10. CFile讀寫二進制文件的問題

|debug調試看錯在復哪一制步
CFile file;
file.Open(L"gamelist.dat",CFile::typeBinary|CFile::modeRead|CFile::shareDenyNone|CFile::modeNoTruncate|CFile::modeCreate);
Game g;
file.Read(&g,sizeof(Game));
file.Close();
CString temp;
temp.Empty();
temp=g.name[0];
MessageBox(temp);

file.Read(&g,sizeof(Game));
出來的書錯誤的數值

建議你看看 對象的持久化。

閱讀全文

與cfile寫文件結束相關的資料

熱點內容
帶衣櫃的文件櫃高多少 瀏覽:568
批處理壓縮文件操作 瀏覽:577
iphone5網路信號差 瀏覽:8
webshell掃描工具2017 瀏覽:191
qq2012版本不能登錄限制破解補丁 瀏覽:706
在word第一頁前再加一頁 瀏覽:719
百度網站為什麼不收錄了 瀏覽:359
網站設計代碼 瀏覽:745
給老闆用哪個app訂機票 瀏覽:450
word如何間隔選定 瀏覽:175
win10魯大師分低 瀏覽:435
哪個階段學編程最好 瀏覽:954
為什麼做物理實驗都要編程 瀏覽:286
iphone追蹤功能 瀏覽:903
re文件管理器支持60嗎 瀏覽:935
學習unix編程用哪個系統 瀏覽:356
u盤格式化量產工具 瀏覽:646
列印文件字體間距多少合適 瀏覽:407
除了中國知網還有什麼學術的網站 瀏覽:149
微信轉發文件最多多少個 瀏覽:612

友情鏈接