導航:首頁 > 文件管理 > 怎麼判斷文件結束

怎麼判斷文件結束

發布時間:2024-10-03 14:16:12

A. 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,說明文件沒有結束,否則已經結束了
{
//操作
}

B. 如何判斷寫文件結束

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

方法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;
}

C. gets與scanf如何判斷讀取文件結束

gets與scanf判斷讀取文件結束
(1) void * =====NULL

(2)int =======EOF=======0
當出錯或到文件末尾時:
scanf() 返回int,故與EOF匹配
gets() 返回char * ,故與NULL匹配
兩個例子:
(1)
#include<stdio.h>
void main()
{
char a[20];
int i=0;

freopen("input.txt","r",stdin);
while(scanf("%s",a)!=EOF) printf("%s",a);

}
#include<stdio.h>
void main()
{
char a[20];
int i=0;

freopen("input.txt","r",stdin);
while(gets(a)!=NULL) puts(a);

}
補充:(1)關於' ' ,'\0' ,NULL ,EOF,空格(ascii碼為32) 的區別 :
' '和空格 等價
'\0' 是ascii碼為0的字元,即為空字元
至於 NULL和EOF要依情況而定了。
(2)
scanf()函數返回成功賦值的數據項數,出錯時則返回EOF

gets()用於從標准輸入流stdin讀入一個整行(以'\n'或EOF)結束,寫入ptr指向的字元數組,並返回這
個指針;出錯或遇到文件結束時則返回NULL。行末的'\n'從流中取出,但不寫入數組。gets()不檢查被寫
入的數組大小。
getchar()用於從標准輸入流stdin讀入一個字元,並返回這個字元。如果讀到文件結尾,則返回EOF。注
意到EOF不能用char類型表示,所以getchar()函數返回的是一個int型的數。使用時也應該注意這一點。

D. 怎麼判斷文件已經到尾了

在C語言里,如果讀到了EOF就表明文件結束 。ch=fgetc(fp);
ch==EOF也是文件結尾

E. 怎麼判斷文件每行的終止符和末尾終止符

如果指的是文本文件,那麼你先用16進制編輯程序看一下,每行結束時用的是否是0x0d 0x0a,即回車符和換行符。如果是,則這個文件用記事本打開能正確顯示。
C++編程用fgets函數一次可讀取一行數據;如果feof(fp)返回真值則文件結束,或者用fgets函數返回值來判斷,比如fgets返回值是EOF或-1,0則表示讀取失敗,或到了文件結尾。(fgets返回值應當是本次讀到的字元數。)

閱讀全文

與怎麼判斷文件結束相關的資料

熱點內容
蘋果7如何使用萬能鑰匙 瀏覽:254
微信文件傳送電腦 瀏覽:600
什麼app可以解壓百度雲rar 瀏覽:627
蘋果6sp換殼 瀏覽:956
海盜船k70rgb燈光配置文件 瀏覽:336
linuxfsstat 瀏覽:926
電腦文件有個鎖 瀏覽:441
ps多張pdf文件夾 瀏覽:2
怎樣壓縮文件能傳到qq郵箱 瀏覽:923
南昌房管局網站怎麼查備案 瀏覽:884
如何設置ipad下載密碼 瀏覽:458
ae信號干擾教程 瀏覽:548
電腦之前刪掉的文件怎麼找 瀏覽:805
索尼z1刷什麼系統升級 瀏覽:466
自創字體怎麼編程序 瀏覽:381
成都的蘋果售後服務電話號碼 瀏覽:698
文件放筆記本哪個盤 瀏覽:745
starbound星球文件格式 瀏覽:137
javathis和super 瀏覽:782
iphone5左上角翹屏 瀏覽:863

友情鏈接