sprintf与printf的不同点是什么?
sprintf函数创造出来有啥意义?在什么情况下需要使用这个函数?? 展开
这个函数的功能就是将某一个类型的数据变成字符串的形式,比如,int i=1000,这个是一个int型,有时候我们需要将这个值变为字符串,存到数组里,那么就可以使用这个函数。
发展历史
C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普逊和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。
为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI C”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。
C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。
1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
20世纪60年代,美国AT&T公司贝尔实验室(AT&T Bell Laboratories)的研究员肯·汤普森(Kenneth Lane Thompson)闲来无事,手痒难耐,想玩一个他自己编的,模拟在太阳系航行的电子游戏——Space Travel。
他背着老板,找到了台空闲的小型计算机——PDP-7。但这台电脑没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为PDP-7开发操作系统。
后来,这个操作系统被命名为——UNICS(Uniplexed Information and Computing Service)。
1969年,美国贝尔实验室的Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母),并且用B语言写了初版UNIX操作系统(叫UNICS)。
1971年,同样酷爱Space Travel的丹尼斯·里奇为了能早点儿玩上游戏,加入了汤普森的开发项目,合作开发UNIX。他的主要工作是改造B语言,使其更成熟。
1972年,美国贝尔实验室的丹尼斯·里奇在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
以上内容参考:百度百科-C语言
printf函数与sprintf不同之处有:
(1)函数的声明不同
int printf(const char *format [, argument]...);
int sprintf(char *buffer, const char *format [, argument] ...);
sprintf比printf多一个参数buffer,这个参数的作用见(2)的描述。
(2)函数的功能不同
函数printf(...)根据指定的格式(format)将参数(argument)输出到屏幕上;
函数sprintf(...)根据指定的格式(format)将参数(argument)输出到由指针buffer指定的字符数组(字符缓冲区)中;
(3)用法举例
#include <stdio.h>
void main()
{
/*字符数组buffer用于存放sprintf函数的输出*/
char buffer[256];
int x = 100;
char *message = "Hello world";
/* 用sprintf函数将x和message输出到字符数组buffer中 */
sprintf(buffer, "%s%d", message, x);
/* 用printf函数将buffer的内容输出到屏幕上显示 */
printf("%s\n", buffer);
}
比如,int i=1000,这个是一个int型,有时候我们需要将这个值变为字符串,存到数组里,那么就可以使用这个函数。如:
char a[20];
int i = 2100;
sprintf(a,"i=%d",i);
之后,数组a里面存的就是“i=2100”,是以字符形式存进去的