标签:串处理 处理 方式 6.4 cal 情况 prot type 数字
sprintf(string,"%f",num);
string是一个字符串,num是你要的数字,这样就能将浮点数num转成字符串string了,你那个写法是错的,后面还有对指针进行运算也是不对的。
char s[20];
int a=10;
sprintf(s,"%d.jpg",a);
//若a=10,则字符串s中存放的是"10.jpg".
C语言在字符串处理中本来就很繁琐,但字符串处理是编写代码最常遇到的问题,今天说的sprintf是printf的加强版。用好了它
能在字符串处理中做到事半功倍的效果,具体看代码:
函数简介:
字串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了。
函数功能:
把格式化的数据写入某个字符串缓冲区。
头文件:
函数原型:
int sprintf( char *buffer, const char *format, [ argument] … );
参数列表:
buffer:char型指针,指向将要写入的字符串的缓冲区。
format:char型指针,指向的内存里面存放的将要格式字符串。
[argument]...:可选参数,可以是任何类型的数据。
返回值:字符串长度(strlen)
相关函数:
int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format, [argument] ... );
int _sprintf_s_l(char *buffer,size_t sizeOfBuffer,const char *format,locale_t locale ,[argument] ... );
int swprintf_s(wchar_t *buffer,size_t sizeOfBuffer,const wchar_t *format ,[argument]...);
int _swprintf_s_l(wchar_t *buffer,size_t sizeOfBuffer,const wchar_t *format,locale_t locale ,[argument]…);
template <size_t size>
int sprintf_s(char (&buffer)[size],const char *format, [argument] ... ); //仅存在于C++
template <size_t size>
int swprintf_s(wchar_t (&buffer)[size],const wchar_t *format ,[argument]...); //仅存在于C++
参数说明及应用举例
sprintf格式的规格如下所示。[]中的部分是可选的。
%[指定参数][标识符][宽度][.精度]指示符
若想输出`%‘本身时, 请这样`%%‘处理。
1. 处理字符方向。负号时表示从后向前处理。
2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。
3. 字符总宽度。为最小宽度。
4. 精确度。指在小数点后的浮点数位数。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
转换字符
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位。
Converts floats or doubles into formatted strings.
function sprintf ( format [1] : string, array : float ; or double ) return_val [dimsizes(array)] : string
A "C" style format string, See "man sprintf" for more information.
arrayAn array of any dimensionality of float or double values.
This function uses the format string to call the system "sprintf" function. This is different from the C version in two ways: 1) only one "%" operator is allowed for the string, and 2) only floating point numbers (float and double) are allowed. You must understand how to create a C format string to use this function.
Briefly, the applicable conversion characters for printing are:
f: [-]m.dddddd, where the number of d‘s is given by the precision (default 6).e[,E]: [-]m.dddddde±xx or [-]m.ddddddE±xx, where the number of d‘s is given by the precision (default 6).
g[,G]: use %e or %E if the exponent is less than -4 or greater than or equal to the precision; otherwise use %f.
Example 1
The code snippet:
x = 12.3456 title = "Sample title, x=" + sprintf("%5.2f", x)
will result in title = "Sample title, x=12.35". Note that the value returned by sprintf is rounded, due to the specified print format.
Example 2
Here are some additional examples demonstrating the "e[,E]" and "g[,G]" formats:
x = 12.3456 print( sprintf("%7.3e", x) ) ===> 1.235e+01
x = -0.000013583 print( sprintf("%4.3E", x) ) ===> -1.358E-05
x = 23456789. print( sprintf("%6.4g", x) ) ===> 2.3457e+07
print( sprintf("%6.4G", 10000000.) ) ===> 1E+07
print( sprintf("%6.4g", 10.) ) ===> 10
print( sprintf("%6.4g", 10.56) ) ===> 10.56
Example 3
A user could also put the format into a string variable:
fmt = "%5.2f" emt = "%7.3e" gmt = "%4.3g" title = "Sample title, x=" + sprintf(fmt, x) +" y="+ sprintf(fmt, y) +" z=" + sprintf(gmt, z) subTitle = sprintf(gmt, x)
Example 4
sprinti and sprintf can be used to provide limited formatting for printing ASCII text. The following code:
print(" K mylats mylons exacts mytemps fo") do n=0,N-1 print (sprinti("%6.0i", knt(n)) +" " +sprintf("%9.5f", mylats(n)) +" " +sprintf("%9.2f", mylons(n)) +" " +sprintf("%9.3f", exacts(n)) +" " +sprintf("%9.4f", mytemps(n))+" " +sprintf("%9.4f", fo(n)) ) end do
will produce the following output:
(0) K mylats mylons exacts mytemps fo (0) 16.28100 -126.14 20.650 20.6500 20.6500 (0) 5 16.28110 -126.14 20.650 20.6500 -999.0000 (0) 25 16.36279 -125.77 20.550 20.5500 20.5500 (0) 50 16.36289 -125.77 20.550 20.4501 20.4501 (0) 75 16.71504 -125.86 20.350 20.3500 20.3500 (0) 100 16.71514 -125.86 20.350 20.3501 20.3502 (0) 300 16.63296 -126.22 20.650 20.6500 20.6500 (0) 400 16.63305 -126.22 20.650 20.6500 -999.0000 (0) 700 40.57919 -74.57 2.350 2.3500 2.3500 (0) 900 40.57929 -74.57 2.350 3.4908 3.4891 (0) 1000 40.52584 -74.11 4.750 4.7500 4.7500 (0) 3000 40.52594 -74.11 4.750 4.5151 4.5153 (0) 7000 40.87282 -74.04 1.350 1.3500 1.3500 (0) 10000 40.87292 -74.04 1.350 2.2145 2.2143 (0) 15000 40.92625 -74.50 0.850 0.8500 0.8500 (0) 123456 40.92635 -74.50 0.850 1.4571 1.4570
标签:串处理 处理 方式 6.4 cal 情况 prot type 数字
原文地址:http://www.cnblogs.com/yuandongtao1989/p/6692846.html