标签:
学习总结
1、文件函数原型1:
FILE* fopen(char *filename, char *openmode); //打开文件,返回文件指针
filename:文件名,更确切地说,是包含文件名的字符串地址;
openmode:打开模式(r,w,a,r+,w+,a+,……)
打开失败返回NULL
int getc(FILE *fp); //读文件,返回字符
fp:读取文件指针
int putc(int ch, FILE *fp); //写文件,返回写入字符的ASCII值
ch:字符
fp:写入文件指针
int fclose(FILE *fp); //关闭文件,返回写入0则代表成功
fp:关闭文件指针
例子:
1 #include <stdio.h>
2 #include <stdlib.h>
3 int main(int argc, char *argv[])
4 {
5 int ch;
6 FILE *fp;
7
8 if(argc != 2)
9 {
10 printf("error params!\n");
11 exit(1);
12 }
13
14 fp = fopen(argv[1],"r");
15
16 if(fp == NULL)
17 {
18 printf("can not open file!\n");
19 exit(1);
20 }
21
22 while((ch = getc(fp)) != EOF)
23 {
24 putc(ch,stdout);
25 }
26
27 if(fclose(fp) != 0){
28 printf("file close error!");
29 }else{
30 printf("read file over!\n");
31 }
32
33 return 0;
34 }
2、文件函数原型2:
int printf( const char *format , [,argument,...]); //格式化输出,返回输出字符个数
*format:字符常指针
…:变长变量
int scanf(char *format[,argument,...]); //格式化输入,返回成功赋值的数据项数
*format:字符常指针
[,argument,...]:变长变量
读到文件末尾出错时则返回EOF
int fprintf(FILE *fp, const char *format , [,argument,...]); //格式化输出,返回输出字符个数
fp:输出到目标文件的文件指针
*format:字符常指针
[,argument,...]:变长变量
与printf的区别缺少指定目标文件指针,printf默认输出到stdout
int fscanf(FILE *fp , char *format[,argument,...]); //格式化输入,返回成功赋值的数据项数
fp:输入来源的文件指针
*format:字符常指针
[,argument,...]:变长变量
与scanf的区别缺少指定目标文件指针,scanf默认从stdin获取数据来源
例子:
1 #include <stdio.h>
2 #include <string.h>
3 #define LEN 40
4
5 int main(int argc, char *argv[])
6 {
7 char str[LEN];
8
9 fscanf(stdin, "%s", str);
10 while(strcmp(str,"quit") != 0)
11 {
12 fprintf(stdout, "%s\n", str);
13 fscanf(stdin, "%s", str);
14 }
15
16 return 0;
17 }
3、文件函数原型3:
char *gets( char *buf ); //字符串标准输入,返回字符串指针,遇到回车则结束输入
buf:存储输入地址
与scanf字符串区别:scanf遇到空格、回车和Tab键都会认为输入结束; gets遇到回车认为输入结束。
例子:
1 #include<stdio.h>
2 #define MAXLINE 10
3 int main()
4 {
5 char str1[MAXLINE];
6 char str2[MAXLINE];
7
8 gets(str1);
9 printf("%s\n",str1);
10
11 scanf("%s",str2);
12 printf("%s\n",str2);
13
14 return 0;
15 }
执行结果:
abc def
abc def
abc def
abc
int puts(char *buf); //字符串标准输出,遇到‘\0’则停止输出,执行成功返回输出的字节数,执行失败返回EOF
buf:输出字符串
与printf字符区别:输出到字符串最后,puts会自动补’\n’,而printf不会
例子:
1 #include<stdio.h>
2 int main()
3 {
4 char string[10] = {‘a‘,‘b‘,‘c‘,‘d‘,‘\n‘,‘e‘,‘f‘,‘\0‘,‘g‘,’h’};
5 int a,b;
6 a=puts(string);
7 b=printf("%s",string);
8 printf("\nputs retrun %d,printf return %d\n",a,b);
9 return 0;
10 }
执行结果:
abcd
ef
abcd
ef
puts retrun 8,printf return 7
char *fgets( char *buf, int max, char *fp); //字符串标准输入,返回字符串指针,遇到换行符(包括换行符也读取)或比读取到最大长度少一个字符(因为会向字符串后添加‘\0’)或读取到文件最后则结束输入
buf:存储输入地址
max:输入字符串最大数
fp:输入文件指针
例子:
1 #include<stdio.h>
2 #include<stdlib.h>
3 #define MAXLINE 10
4 int main()
5 {
6 char line[MAXLINE];
7 FILE *fp;
8 int c=0;
9
10 fp = fopen("abc","r");
11
12 if(fp == NULL)
13 {
14 printf("open file error!\n");
15 exit(1);
16 }
17
18 while(fgets(line,MAXLINE,fp) != NULL)
19 {
20 fputs(line,stdout);
21 printf("/");
22 c++;
23 }
24 printf("%d\n",c);
25 return 0;
26 }
执行结果:
cat abc
1234567890
1234567891234567891234567
000
./test
123456789/0
/123456789/123456789/1234567
/
/000
/7
int fputs(char *buf, FILE *fp); //字符串文件输出,遇到‘\0’则停止输出,执行成功返回输出的字节数,执行失败返回EOF
buf:输出字符串
fp:输入文件指针
与puts区别:fputs不会添加换行符
例子:
1 #include <stdio.h>
2 int main()
3 {
4 char *str="abcdef g\n";
5 fputs(str,stdout);
6 return 0;
7 }
执行结果:
abcdef g
【C语言学习】《C Primer Plus》第13章 文件输入/输出
标签:
原文地址:http://www.cnblogs.com/wcd144140/p/4923560.html