当从一个文件中读取数据时,以读方式打开文件。
当把一些数据写到文件时,以写方式打开文件。
#include <stdio.h>
FILE *fd = fopen("1.txt","r"); //读
FILE *fd = fopen("1.txt","w"); //写
int fgetc(FILE *stream);
fgetc()函数从文件流里取出下一个字节并把这个字节作为一个字符返回。当它到达文件尾或出现错误时返回EOF。
例如:
FILE *fd = fopen("1.txt","r");
int tmp = fgetc(fd); printf("%d",tmp); 输出ASCLL码
char tmp = fgetc(fd); printf("%c",tmp); 输出ASCLL码对应字符
int getc(FILE *stream)
函数于fgetc函数的作用一样。
FILE *fd = fopen("1.txt","r");
char tmp;
tmp = getc(fd);
cout<<tmp<<endl;
int getc(stdin)
从键盘上读取一个字符。
char tmp;
tmp = getc(stdin);
cout<<tmp<<endl;
int getchar()
函数的作用相当于getc(stdin),它从标准输入里读取下一个字符。
char tmp;
tmp = getchar();
cout<<tmp<<endl;
int fputc(int c,FILE *stream);
函数把一个字符写到一个输出文件流中。它返回写入的值,
如果失败,则返回EOF。
FILE *fd = fopen("1.txt","w");
char tmp;
int c = 97;
tmp = fputc(c,fd);
cout<<tmp<<endl;
int putc(int c,FILE *stream);
函数作用与fputc一样。
int putchar(int c);
putchar函数作用是把单个单词写到标准输出上。
char *fgets(char *s,int n,FILE *stream);
fgets函数的作用是从输入文件流stream里读取n-1个字符,把读到的字符写到s指向的字符串里。
参数n:当读取到n-1个字符时结束,并在接收字符串最后加上一个'\0'。或者当读取的字符是换行时,把换行字符添加到接收字符串里,再在后面加上一个'\0'。当fgets()函数成功时,返回一个指向字符串s的指针。如果文件流已经到达文件尾,fgets会设置这个文件流的EOF标识并返回一个空指针。如果出现错误,fgets返回一个空指针并设置errno以指出错误的类型。
例如:
FILE *fd = fopen("1.txt","r");
char tmp;
char buff[128] = {0};
int c = 97;
fgets(buff,10,fd);
cout<<buff<<endl;
char *gets(char *s);
gets函数类似于fgets,只不过他从标准输入读取数据并丢弃遇到的换行符。它在接收字符串的尾部加上一个null字节。
char buff[128] = {0};
char *p;
int c = 97;
p = gets(buff);
cout<<buff<<endl;
cout<<p<<endl;
printf系列函数能够对各种不同类型的参数进行格式编排和输出。
int printf(const char *format,...);
printf()函数把自己的输出送到标准输出。
printf()系列函数还有一些其他的成员,他们以各自不同的方式对其参数进行处理。
%d,%i:以十进制格式输出一个整数
%o,%x:以八进制或十六进制格式输出一个整型
%c:输出一个字符
%s:输出一个字符串
%f:输出一个浮点数
%e:以科学技术法格式输出一个双精度浮点数
%g:以通用格式输出一个双精度浮点数
int sprintf(char *s,const char *format,...);
例如:把字符串str,写到buff中。
char buff[1024] ={0};
char *str = "hello worldhgvbfn";
sprintf(buff,"%s",str);
printf("%s\n",buff);
函数的作用是把自己的输出和一个结尾空字符写到作为参数传递过来的字符串s里。
这个字符串必须足够容纳所有的输出数据。
int fprintf(FILE *stream,const char *format,...);
fprint()函数的作用是把自己的输出输送到一个指定的文件流。
例如:把字符串str,写到文件1.txt中
FILE *fd = fopen("1.txt","w");
char *str = "hello worldhgvbfn";
fprintf(fd,"%s",str);
int scanf(const char *format,...);
sacnf()函数读入的值将保存到对应的变量里去,这些变量的类型必须正确,并且他们必须精确匹配格式字符串。
否则,内存数据就可能会遭到破坏,从而使程序崩溃。
转换控制字符:
%d:读取一个十进制整数
%o、%x:读取一个八进制或十六进制整数
%f、%e、%g:读取一个浮点数
%c:读取一个字符
%s:读取一个字符串
%[]:读取一个字符集合
%%:读取一个%字符
例如:
int tmp;
sacnf("%d",&tmp);
int fscanf(FILE *stream,const char *format,...);
fscanf()函数从一个文件流中读取一个字符串读到接收字符串中。
例如:
FILE *fd = fopen("1.txt","r");
char buff[128] = {0};
fscanf(fd,"%s",buff);
cout<<buff<<endl;
当函数遇到空格或换行,读取一个字符串结束。
int sscanf(const char *s,const char *format,...);
函数的作用是从一个字符串中读取一个子字符串到接收字符串。
例如:
char *str = "hello world";
char budd[128] = {0};
sscanf(str,"%s",budd);
cout<<budd<<endl;