本文**都在windows/vc++6.0下測試過, 在linux/g++下也沒有問題。
但是請一定注意linux和windows檔案格式的區別,比如:
1. 當linux上的**讀取windows檔案格式時, 讀取結果的每行都會多乙個\r, 想想為什麼。
2. 當windows上的**讀取linux格式檔案時, 讀取的結果會顯示只有一行, 想想為什麼。
先用c語言寫乙個醜陋的程式:
#include
#include
int main()
char ch;
while(eof != (ch=fgetc(fp)))
fclose(fp);
return 0;
}你只能看到結果,卻沒法利用每一行。 我們來改為:
// vc++6.0
#include
#include
int main()
;int len = 0;
file *fp = fopen("1.txt", "r");
if(null == fp)
while(!feof(fp))
fclose(fp);
printf("\n");
return 0;
}這樣, 我們就是整行讀取了。
感覺c的讀取方法有點醜陋,還是看看c++吧(只要檔案格式windows/linux和編譯平台windows/linux對應一致, 就放心用吧):
#include
#include
#include
using namespace std;
int main()
}else // 沒有該檔案
return 0;
}當然,你可以對上述程式進行修改,讓1.txt中的每一行輸入到2.txt中,如下:
#include
#include
#include
using namespace std;
int main()
}else // 沒有該檔案
return 0;
}結果, 2.txt和1.txt中的內容完全一致,你可以用beyond compare比較一下,我比較過了。
看來上述程式還能實現檔案的複製呢,如下:
#include
#include
#include
using namespace std;
void filecopy(char *file1, char *file2)
}int main()
當然了,上述程式只能針對文字檔案(不僅僅是.txt),對其它型別的檔案,不適合。
按行讀取檔案
const string strurlfilename testurl.txt ifstream fin strurlfilename.c str fstream binary if fin fin.eof string serverurl getline fin,serverurl info lo...
c讀取按行讀取檔案
c中沒有getline 這個函式,該函式只存在於c 中。有些人說用gets,但是這個函式是不安全的,gets不知道字串的大小,容易造成溢位的問題。解決方案,使用fgets函式 其關鍵在於在讀出n 1個字元之前,如遇到了換行符或eof,則讀出結束。因此,通過設定適當大小的緩衝區,即可實現讀取一行的功能...
C 讀取檔案 按行讀取
zz c 如何讀取檔案前面說過了 下面以乙個例子來說明如何按行讀取,其實很簡單,就是使用filestream的readline 方法。例如有這樣乙個檔案test.txt,讀取出來顯示在乙個richtextbox中,檔案內容如下 html view plain copy print?諾基亞 n8 摩托...