c语言什么叫格式化输出?C语言技能提升系列文章
c语言什么叫格式化输出?C语言技能提升系列文章输入输出的对象是字符串,所以参数列表中有一个char *。s前缀下面,我们来简单分析一下这些函数吧。这些函数的命名规则是,以printf和scanf为基础加上一些前缀。不加前缀的默认输出到控制台。f前缀输入输出的对象是文件,所以我们看到了参数列表中有FILE。
当初大家入门学习C语言的时候,面对一个黑黑的命令行界面,仅有的交互方法只有printf/scanf这两个函数作为输入输出。但是,大家知道吗?这两个函数后面还有很多兄弟姐妹。那就是C语言的格式化输入输出函数,这些函数就定义在我们熟悉的stdio.h头文件中。
我们先来简单看一下他们的函数原型吧。
int fprintf ( FILE * stream const char * format ... );
int fscanf ( FILE * stream const char * format ... );
int printf(const char * ...);
int scanf(const char * ...);
int sprintf(char * const char * ...);
int sscanf(const char * const char * int ...);
int vfprintf(FILE * const char * va_list);
int vprintf(const char * va_list);
int vsprintf(char * const char * va_list);
在不同的编译器和操作系统中,所提供的这一系列函数可能会和我在这里所列出来的不太一样。
但是,上面这些函数,我能说,是所有编译器和操作系统都会支持的。
下面,我们来简单分析一下这些函数吧。这些函数的命名规则是,以printf和scanf为基础加上一些前缀。不加前缀的默认输出到控制台。
f前缀
输入输出的对象是文件,所以我们看到了参数列表中有FILE。
s前缀
输入输出的对象是字符串,所以参数列表中有一个char *。
v前缀
可以和可变参数列表(va_list)配合使用,这样的目的是可以方便大家创建封装自己的输入输出函数。至于可变参数列表是什么,我会单独写一篇来介绍。
那么我们下面直接看一下实例吧。
/* fprintf example */
#include <stdio.h>
int main ()
{
FILE * pFile;
int n;
char name [100];
pFile = fopen ("myfile.txt" "w");
for (n=0 ; n<3 ; n )
{
puts ("please enter a name: ");
gets (name);
fprintf (pFile "Name %d [%-10.10s]\n" n 1 name);
}
fclose (pFile);
return 0;
}
/* fscanf example */
#include <stdio.h>
int main ()
{
char str [80];
float f;
FILE * pFile;
pFile = fopen ("myfile.txt" "w ");
fprintf (pFile "%f %s" 3.1416 "PI");
rewind (pFile);
fscanf (pFile "%f" &f);
fscanf (pFile "%s" str);
fclose (pFile);
printf ("I have read: %f and %s \n" f str);
return 0;
}
/* sprintf example */
#include <stdio.h>
int main ()
{
char buffer [50];
int n a=5 b=3;
n=sprintf (buffer "%d plus %d is %d" a b a b);
printf ("[%s] is a string %d chars long\n" buffer n);
return 0;
}
/* sscanf example */
#include <stdio.h>
int main ()
{
char sentence []="Rudolph is 12 years old";
char str [20];
int i;
sscanf (sentence "%s %*s %d" str &i);
printf ("%s -> %d\n" str i);
return 0;
}
/* vprintf example */
#include <stdio.h>
#include <stdarg.h>
void WriteFormatted ( const char * format ... )
{
va_list args;
va_start (args format);
vprintf (format args);
va_end (args);
}
int main ()
{
WriteFormatted ("Call with %d variable argument.\n" 1);
WriteFormatted ("Call with %d variable %s.\n" 2 "arguments");
return 0;
}
以上就是今天的内容,希望对大家有所帮助。