C語言:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char* argv[]) { int count = 0; FILE* fp; char str[100]; fp = fopen("test.txt", "r"); while (fscanf(fp, "%s", str) != EOF) { printf("%s\n", str); count++; } fclose(fp); return 0; }
程序輸出:
C++語言:
(轉載)http://www.cnblogs.com/chenliangqiao/archive/2011/07/11/2102741.html
2.2.3 讀寫文件
在這段程序中,我們首先創建了一個輸入文件流ifstream的對象fin,並利用它的構造函數將其連接到一個文本文件Date.txt。所謂構造函數,就是這個對象創建的時候所執行的函數。這里,我們使用“Date.txt”作為參數來調用這個構造函數,實際上就是使用這個文件創建fin對象。除此之外,我們還可以使用fin所提供的open()函數來打開一個文件。當我們利用fin成功打開一個文件之后,就可以利用提取符“>>”從fin中提取各種數據。“>>”會以空格為分隔符逐個從文件中讀取數據並將其保存到相應的數據變量中。例如,如果文件中的內容如下:
用戶輸入的當前日期是:
1983 7 3
默認情況下,fin總是從文件的開始部分進行讀取的,為了直接讀取第二行的內容,我們使用“fin.ignore(256,'\n');”忽略了第一行的內容,將讀取位置跳轉到第二行。然后,通過提取符“>>”,我們將第二行用空格分割的三個數據分別提取並保存到了三個變量中。
同樣,為了將數據寫入文件,我們需要創建一個輸出文件流ofstream的對象fout,然后通過它的構造函數或者是open()函數來打開一個文件,將這個文件和fout對象連接起來,然后通過插入符“<<”將數據插入到fout對象,也就實現了將數據寫入到它所關聯的文件中的目的。整個過程如下圖2-9所示:
#include <iostream> #include <string> #include <fstream> using namespace std; int main(int argc, char** argv) { ifstream ifs("test.txt"); string str; int count = 0; while (ifs >> str) { cout << str << endl; count++; } ifs.close(); return 0; }
程序輸出:
總結:在C語言中使用fsanf()就可以實現以空格為分隔符讀取文件內容。
而在C++中,ifstream的>>---提取符直接就是以空格為分隔符讀取文件內容。