printf一系列函数能将各种不同类型的参数进行格式编排和输出,每个参数在输出流中的表现形式由格式参数format来控制,包含了需要输出的普通字符和转换控制符代码的字符串,转换控制符规定了其余参数的输出方式和输出地方
#include <stdio.h> int printf(const char *format, ...); int sprintf(char *s, const char *format, ...); int fprintf(FILE *stream, const char *format, ...);
printf函数将输出送到标准输出;sprintf函数将自己的输出和结尾空字符写到作为参数传递过来的字符串s中,这个字符串必须足够容纳所有的输出数据;fprintf函数将自己的输出送到一个指定的stream,通常是一个文件
sprintf和printf仅仅输出的目的地不同,一个是字符串一个是命令行标准输出,而sprintf函数可以将其它数据类型转换成字符串
#include <stdio.h>
int main(){
char str[10];
int a = 12345;
float b = 1.2345;
sprintf(str, "%d", a);
printf("%s\n", str);
sprintf(str, "%.4f", b);
printf("%s\n", str);
return 0;
}
lihui@2015 /cygdrive/d/work
$ gcc hello.c
lihui@2015 /cygdrive/d/work
$ ./a.exe
12345
1.2345
fprintf是用来文件操作的,将输出信息输出到指定的文件当中
#include <stdio.h>
int main(){
char str[15] = "Hello World";
FILE *out;
out = fopen("lihui.txt", "w");
if (out)
fprintf(out, "%s\n", str);
fclose(out);
return 0;
}
lihui@2015 /cygdrive/d/work
$ ./a.exe
lihui@2015 /cygdrive/d/work
$ cat lihui.txt
Hello World
下面是转换控制符
%d, %i:以十进制格式输出一个整数 %o,%x:以八进制或十六进制格式输出一个整数 %c:输出一个字符 %s:输出一个字符串 %f:输出一个(单精度)浮点数 %e:以科学计数法格式输出一个双精度浮点数 %g:以通用格式输出一个双精度浮点数
在%可以跟一些数字,也就是字段限定符,来控制输出对齐的情况,比如下面例子:
#include <stdio.h>
int main(){
char *a = "Hello World!";
char *b = "Congratulations!";
float c = 1.2345;
printf("Right:\n");
printf("%s\n", a);
printf("%s\n", b);
printf("\nLeft:\n");
printf("%-s\n", a);
printf("%-s\n", b);
printf("\nSame Right:\n");
printf("%20s\n", a);
printf("%20s\n", b);
printf("\nSame Left:\n");
printf("%-20s\n", a);
printf("%-20s\n", b);
printf("\nRight:\n");
printf("%20s\n", a);
printf("%20s\n", b);
printf("%20.4f", c);
printf("\nRight:\n");
printf("%*s\n", 20, a);
printf("%*s\n", 20, b);
printf("%*f\n", 20, c);
return 0;
}
那么输出结果:
lihui@2015 /cygdrive/d/work
$ gcc hello.c
lihui@2015 /cygdrive/d/work
$ ./a.exe
Right:
Hello World!
Congratulations!
Left:
Hello World!
Congratulations!
Same Right:
Hello World!
Congratulations!
Same Left:
Hello World!
Congratulations!
Right:
Hello World!
Congratulations!
1.2345
Right:
Hello World!
Congratulations!
1.234500
