官术网_书友最值得收藏!

讀寫函數(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 }
主站蜘蛛池模板: 长丰县| 武山县| 长沙市| 镇平县| 察哈| 双鸭山市| 新津县| 井陉县| 乌兰察布市| 深水埗区| 武川县| 龙井市| 延津县| 大新县| 沙湾县| 游戏| 博客| 凤冈县| 湾仔区| 镇沅| 都兰县| 浮山县| 迁安市| 马鞍山市| 肃宁县| 朝阳区| 晋宁县| 炎陵县| 溧阳市| 岫岩| 江永县| 松原市| 宜宾市| 泽州县| 辉县市| 师宗县| 鄂托克前旗| 介休市| 驻马店市| 沁阳市| 永州市|