在C++中,scanf系列函数用于输入,printf系列函数用于输出。
1 scanf系列函数
常用的scanf系列函数包括scanf()、sscanf()和fscanf()。
1.1 scanf()函数
scanf()函数从标准输入流stdin中读取数据,并且将数据写入到指定的变量中。
int a,b,c;
scanf("%d,%d,%d", &a, &b, &c);
需要注意的是,写入的指定变量是指针类型。scanf()函数实际上就是读取键盘在控制台中的输入。
关于scanf()的详细用法请参考
《scanf()、gets()和getline()读取输入》
1.2 sscanf()函数
sscanf()函数从字符串缓冲区中读取数据,并将数据保存到指定的变量中。其格式为
int sscanf(
const char *buffer,
const char *format [,
argument ] ...
);
其中,参数buffer是存储数据的缓冲区;format指定了读取的格式;argument是一个可选的变量,从buffer中读取的数据保存在该变量中。
char buf[512];
sscanf("123456", "%s", buf);
此时,buf的值是”123456”。
1.3 fscanf()函数
fscanf()函数从流(stream)中读取数据,并将数据保存在指定的变量中。该函数的格式为
int fscanf(
FILE *stream,
const char *format [,
argument ]...
);
其中,stream是FILE结构的指针;format指定了读取的格式;argument是一个可选的变量,从buffer中读取的数据保存在该变量中。
相关链接:
C/C++中,将每个文件简单地作为顺序字节流,每个文件用文件结束符结束。FILE结构体用来对文件进行操作,该结构体在stdio.h中定义。
FILE *stream;
char s[80];
fopen_s( &stream, "fscanf.txt", "w+" );
fscanf( stream, "%s", s );
fclose( stream );
以上代码的作用是从fscanf.txt文件中读取数据,并将数据保存到s中。
从以上分析可知,scanf()、sscanf()和fscanf()三个函数都是数据保存到指定变量中。其区别在于读取源不同,scanf()函数的读取源是标准输入流;sscanf()函数的读取源是字符串缓冲区;fscanf()函数的读取源是文件。
2 printf系列函数
常用的scanf系列函数包括printf()、sprintf()和fprintf()。以上三个函数的主要作用是将数据保存到指定的目的变量中。其区别在于目的变量不同,printf()函数的目的变量是标准输出流;sprintf()函数的目的变量是字符串缓冲区;fprintf()函数的目的变量是文件。