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