- 算法競賽寶典(第一部):語言及算法入門
- 張新華
- 1120字
- 2021-03-19 19:27:46
讀寫函數(shù)
fputs與fgets函數(shù)
fgets的功能是在文件中讀一行字符串。它有三個參數(shù)。
例如,fgets(a,n,in);其中a是一個char型數(shù)組用于存放讀取的字符串,n表示讀取n~1個字符,in是文件讀入指針。
fgets函數(shù)會在讀入的數(shù)據(jù)末尾加上一個空字符以構(gòu)成一個字符串。
fgets與gets的不同之處在于,fgets讀取到換行符后不會將其省略,而gets讀到換行符時會退出,并會將換行符略去。
fputs的功能是在文件中寫入一行字符串。它有兩個參數(shù)。
例如,fputs(a,out);其中a是一個要輸出的char型數(shù)組,out是文件輸出指針。
fputs與puts的不同之處是fputs在打印時并不添加換行符。
參考程序如下所示:
1 //fgets and fputs 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 FILE *in=fopen("i.txt","rb"); //定義文件讀入指針 8 FILE *out=fopen("o.txt","wb"); //定義文件輸出指針 9 char a[9]; 10 fgets(a,10,in); 11 fputs(a,out); 12 return 0; 13 }
getc與putc函數(shù)
getc函數(shù)的功能是從文件中讀出一個字符。
常用的判斷文件是否讀取結(jié)束的語句為:(ch=getc(fp))!=EOF。EOF為文件結(jié)束標志。文件也可以被理解為一種流,故當文件輸入指針為in時,getc(in)就等同于getchar()了。
putc函數(shù)的功能是把字符ch寫到文件中去。
如果文件輸出指針為out,則putc(out)就等同于putchar()了。
參考程序如下所示:
1 //getc and putc 2 #include <stdio.h> 3 4 int main() 5 { 6 FILE *in=fopen("i.txt","rb"); 7 FILE *out=fopen("o.txt","wb"); 8 char c; 9 c=getc(in); 10 putc(c,out); 11 return 0; 12 }
fgetc與fputc函數(shù)
fgetc函數(shù)的功能是從fp的當前位置讀取一個字符。
例如,fgetc(in);其中in是文件讀入指針。
fputc函數(shù)的功能是將ch寫入fp當前指定位置。
例如,fputs(ch,out);其中ch是要輸出的字符,out是文件輸出指針。
fscanf與fprintf函數(shù)
fscanf的功能是按照指定格式從文件中出讀入數(shù)據(jù)。
fprintf的功能是將格式化數(shù)據(jù)(這里的格式化即按照指定格式)寫入文件中。
有一道題,要求讀取一行字符串,可是該字符串包含有空格,例如“I am a student”,如果使用通常的讀寫方法,當讀到空格時,讀寫語句就會認為該字符串已經(jīng)結(jié)束。那么,有什么好的辦法讀取含空格的字符串呢?
在實際應用中,有下列幾種方法可以讀入包括空格符的字符串。
1.用gets讀取。
1 //gets讀字符串 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 char a[100]; 8 gets(a); 9 puts(a); 10 system("pause"); 11 return 0; 12 }
2.用getline(cin,string)來讀入一行包含空格符的字符串。
1 //getline讀字符串 2 #include <iostream> 3 using namespace std; 4 int main() 5 { 6 string str; 7 getline(cin,str); 8 cout<<str; 9 system("pause"); 10 return 0; 11 }
3.用cin.getline(字符指針,字符個數(shù),結(jié)束符)。結(jié)束符默認是'\n'。
1 //cin.getline讀字符串 2 #include <iostream> 3 using namespace std; 4 main() 5 { 6 char a[80]; //注意與上一個程序數(shù)據(jù)類型的區(qū)別 7 cin.getline(a,80); 8 cout<<a; 9 system("pause"); 10 return 0; 11 }
4.用循環(huán)語句來判斷是否讀完一行,否則讀取這一字符。
1 //循環(huán)語句讀字符串 2 #include <iostream> 3 using namespace std; 4 main() 5 { 6 char c; 7 while((c=getchar())!='\n') //此句前面必要加括號,而且不能在freopen下使用 8 cout<<c; 9 system("pause"); 10 return 0; 11 }
Ch=fin.get();這是在文件流讀寫中使用的,是獲得單個字符。
1 //fin.get()使用 2 #include <iostream> 3 #include<fstream> 4 using namespace std; 5 int main() 6 { 7 int a,b,c,space; 8 ifstream fin("in.txt"); //輸入形式: a b c 9 ofstream fout("out.txt"); //輸出三個個位數(shù)的積到文件out.txt 10 a=fin.get()-'0'; //特別注意該函數(shù)是獲取一個字符包括空格符 11 space=fin.get(); 12 b=fin.get()-'0'; 13 space=fin.get(); 14 c=fin.get()-'0'; 15 fout<<a*b*c; 16 fin.close(); 17 fout.close(); 18 return 0; 19 }
- MySQL數(shù)據(jù)庫管理實戰(zhàn)
- 玩轉(zhuǎn)Scratch少兒趣味編程
- 算法零基礎一本通(Python版)
- Microsoft Dynamics 365 Extensions Cookbook
- Java Web程序設計
- 高級C/C++編譯技術(shù)(典藏版)
- Python Network Programming Cookbook(Second Edition)
- Java持續(xù)交付
- 計算機應用基礎實踐教程
- Instant PHP Web Scraping
- Azure Serverless Computing Cookbook
- Julia 1.0 Programming Complete Reference Guide
- C編程技巧:117個問題解決方案示例
- Oracle 12c從入門到精通(視頻教學超值版)
- 快樂編程:青少年思維訓練