在C语言下,函数输出的时候会有三个函数可以实现这一功能,它们分别是printf、sprintf、fprintf。他们的函数原型是:
#include<stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
从参数上我们可以看到不经常用的两个输出函数sprintf和fprintf它们两个分别是输出到给定的字符串和给定的文件中。下面我们来看看它们在程序中的使用方法。
在这里我们最熟悉的是printf,使用它我们经常是输出字符串或者数字,例如:
#include<stdio.h>
int main()
{
char *str = "hello c!";
char ch = 'o';
int num = 666;
printf("%s %c %d\n",str,ch,num);
return 0;
}
会输出:hello c! o 666
。
printf使用的格式字符如下:
d:以十进制输出;
o:以八进制输出;
x:以十六进制输出;
u:以无符号形式输出整形值;
c:输出一个字符;
s:输出字符串;
f:输出一个浮点数;
e:以科学技术法输出浮点数;
g:输出%f和%e中占用为数较短的一个;
-:输出时左对齐,默认是右对齐,如:printf("%-13s\n",hello);
在有的时候我们在输出%d的时候位数不够我们会用长整形%ld的形式输出,除了一些古老的机子,一般机器长整型long字节尾数不小于整形,短整型short类型字节位数不大于整形。
那其他两个输出函数是干什么用的呢?我们下面来看看:
1、sprintf的简单代码实现:
#include<stdio.h>
int main()
{
char *str = "hello linux!";
char st[256];
sprintf(st, str);//将str指针所指向的字符串输出到数组st的空间
prinft("str = %s\n",str);
printf("st = %s\n",st);
return 0;
}
这是在Linux系统下的gcc编译后的Test可执行c文件。
2、fprintf函数简单代码使用:
#incldue<stdio.h>
#include<unistd.h>
#include<fcntl.h>
int main()
{
char *str = "hello world!";
char st[256];
FILE fd = fopen( "t.txt", O_RDWR | 0666);
fprintf(fd,str);
fgets(st,256,fd);
printf("st = %s\n",st);
close(fd);
return 0;
}
//
#incldue<stdio.h>
#include<unistd.h>
#include<fcntl.h>//file control
int main()
{
int fd = open("a.txt", O_RDWR | 0666);
close(1);
dup(fd);
printf("Hello Linux!");//output file a.txt
return 0;
}