sprintf

转:Visual C++ sprintf()函数用法

旧巷老猫 提交于 2020-01-16 23:16:47
将字串格式化命令。sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访 问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通 常用眼睛再把出错的代码多看几眼就看出来了。   sprintf 将字串格式化。   在头文件 #include<stdio.h   >中   语法: int sprintf(string format, mixed [args]...);   返回值:字符串长度(strlen)   sprintf格式的规格如下所示。[]中的部分是可选的。   %[指定参数$][标识符][宽度][.精度]指示符   若想输出`%'本身时, 请这样`%%'处理。   1. 处理字符方向。负号时表示从后向前处理。   2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。   3. 字符总宽度。为最小宽度。   4. 精确度。指在小数点后的浮点数位数。   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   转换字符   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   %% 印出百分比符号,不转换。   %c 整数转成对应的 ASCII 字元。   %d 整数转成十进位。   %f 倍精确度数字转成浮点数。   %o 整数转成八进位。   %s

itoa()和sprintf()函数

蓝咒 提交于 2020-01-16 23:14:37
1.itoa函数原型 char *itoa( int value, char *string,int radix); 把整数转换成字符串 value:被转的整数值 string:保存转后的字符串的变量 radix:按几进制转换(10,8,2,16进制等) #include <stdlib.h>   #include <stdio.h>   int main(void)   {   int number = 12345;   char string[25];   itoa(number, string, 10);   printf("integer = %d string = %s\n", number, string);   return 0;   } 2.sprintf()函数 itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf,用法和printf相似。  sprintf 是个变参函数,定义如下: int sprintf( char *buffer, const char *format [, argument] ... ); 格式化数字字符串 sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代 itoa 。 如: //把整数123 打印成一个字符串保存在s 中。 sprintf

C语言数字与字符串转换 atoi()函数、itoa()函数、sprintf()函数

寵の児 提交于 2020-01-16 06:23:04
在编程中经常需要用到数字与字符串的转换,下面就总结一下。 1.atoi()    C/C++标准库函数 ,用于字符串到整数的转换。   函数原型:int atoi (const char * str); 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main () 4 { 5 char *numchars="1234"; 6 int num=atoi(numchars); 7 printf("%d\n",num); 8 return 0; 9 }   另外C/C++还提供的标准库函数有:   (1)long int atol ( const char * str );     (2)double atof (const char* str); 2.itoa()    不是 C/C++标准库函数, 用于 整数到字符串的转换。   函数原型: char *itoa( int value, char *string, int radix); 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main () 4 { 5 int num=1234; 6 int radix=8; 7 char res[20]; 8 itoa(num,res,radix); 9 printf("%d(10)=%s

在PHP中用前导零格式化数字

喜欢而已 提交于 2020-01-08 17:42:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我有一个包含值 1234567 的变量。 我希望它精确地包含8位数字,即 01234567 。 是否有PHP函数呢? #1楼 sprintf 是您所需要的。 在上面链接的页面中,编辑(按 某种方式由downvotes请求 ),这里有一个示例“零填充整数”: <?php $isodate = sprintf("%04d-%02d-%02d", $year, $month, $day); ?> #2楼 鉴于该值在$ value中: 回显它: printf("%08d", $value); 为拿到它,为实现它: $formatted_value = sprintf("%08d", $value); 这应该够了吧 #3楼 使用 sprintf : sprintf('%08d', 1234567); 另外,您也可以使用 str_pad : str_pad($value, 8, '0', STR_PAD_LEFT); #4楼 简单的答案 $p = 1234567; $p = sprintf("%08d",$p); 我不确定如何解释“永远不会超过8位”的注释,以及它是指输入还是输出。 如果它引用输出,则必须有一个附加的substr()调用来裁剪字符串。 截断前8位数字 $p = substr(sprintf('%08d',

点分十进制与整型之间的转换

有些话、适合烂在心里 提交于 2020-01-06 15:37:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> #include<stdio.h> int a2dt(const char* str) { int a; unsigned char* ap= (unsigned char*)&a; sscanf(str,"%d.%d.%d.%d",ap,ap+1,ap+2,ap+3); return a; } char * dt2a(int a) { char *s = new char[14]; unsigned char* ap= (unsigned char*)&a; sprintf(s,"%u.%u.%u.%u",ap[0],ap[1],ap[2],ap[3]); return s; } int main() { unsigned int a = a2dt("8.7.6.5"); char * ap = dt2a(a); printf("%0p\n",a); printf("%s\n",ap); return 0; } 来源: oschina 链接: https://my.oschina.net/u/3695598/blog/3151272

snprintf格式化字符串遇到0结束符问题

时间秒杀一切 提交于 2020-01-03 12:45:24
在发送带有签名数据时,使用snprintf格式化数据,发现签名数据有时候有漏掉的情况 如下: char AuthBidirection[320] = { '\0' }; snprintf(AuthBidirection, 320, "Bidirection algorithm=\"%s\",random1=\"%s\",random2=\"%s\",deviceid=\"%s\",serverid=\"%s\",sign1=\"%s\" ", strAlgorithm.c_str(), m_strRandom1.c_str(), strRandom2.c_str(), m_strGbID.c_str(), m_strGbServerID.c_str(), sign1.c_str()); 改为: char AuthBidirection[320] = { '\0' }; snprintf(AuthBidirection, 320, "Bidirection algorithm=\"%s\",random1=\"%s\",random2=\"%s\",deviceid=\"%s\",serverid=\"%s\",sign1=\"", strAlgorithm.c_str(), m_strRandom1.c_str(), strRandom2.c_str(), m_strGbID.c

Go 开发关键技术指南 | Go 面向失败编程 (内含超全知识大图)

十年热恋 提交于 2019-12-26 11:22:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 关注“阿里巴巴云原生”公众号,回复 Go 即可查看清晰知识大图! 导读 :从问题本身出发,不局限于 Go 语言,探讨服务器中常常遇到的问题,最后回到 Go 如何解决这些问题,为大家提供 Go 开发的关键技术指南。我们将以系列文章的形式推出 《Go 开发的关键技术指南》 ,共有 4 篇文章,本文为第 2 篇。 Could Not Recover 在 C/C++ 中, 最苦恼的 莫过于上线后发现有野指针或内存越界,导致不可能崩溃的地方崩溃; 最无语的 是因为很早写的日志打印,比如 %s 把整数当字符串,突然某天执行到了崩溃; 最无奈的 是无论因为什么崩溃都导致服务的所有用户受到影响。 如果能有一种方案,将指针和内存都管理起来,避免用户错误访问和释放,这样虽然浪费了一部分的 CPU,但是可以在快速变化的业务中避免这些头疼的问题。在现代的高级语言中,比如 Java、Python 和 JS 的异常,以及 Go 的 panic-recover 都是这种机制。 毕竟,用一些 CPU 换得快速迭代中的不 Crash,怎么算都是划得来的。 哪些可以 Recover Go 有 Defer, Panic, and Recover 。其中 defer 一般用在资源释放或者捕获 panic

(转)sprintf 将字串格式化

◇◆丶佛笑我妖孽 提交于 2019-12-26 03:11:02
sprintf 将字串格式化。   在头文件 #include<stdio.h>中   语法: string sprintf(string format, mixed [args]...);   传回值: 字串   1. 处理字符方向。-负号时表时从后向前处理。   2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。   3. 字符总宽度。为最小宽度。   4. 精确度。指在小数点后的浮点数位数。   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   转换字符   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   % 印出百分比符号,不转换。   b 整数转成二进位。   c 整数转成对应的 ASCII 字元。   d 整数转成十进位。   f 倍精确度数字转成浮点数。   o 整数转成八进位。   s 整数转成字串。   x 整数转成小写十六进位。   X 整数转成大写十六进位。   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   <?   $money = 123.1   $formatted = sprintf ("%06.2f", $money); // 此时变数 $ formatted 值为 "123.10"   $formatted = sprintf ("%08.2f", $money); //

Socket网络编程--简单Web服务器(2)

*爱你&永不变心* 提交于 2019-12-24 22:25:09
  上一小节通过阅读开源的Web服务器--tinyhttpd。大概知道了一次交互的请求信息和应答信息的具体过程。接下来我就自己简单的实现一个Web服务器。   下面这个程序只是实现一个简单的框架出来。这次先实现能够Accept客户端的请求。   简单创建web服务器   webserver.h 1 #include <iostream> 2 #include <string> 3 #include <string.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <errno.h> 7 #include <sys/types.h> 8 #include <sys/socket.h> 9 #include <netinet/in.h> 10 #include <arpa/inet.h> 11 #include <unistd.h> 12 #include <pthread.h> 13 #include <thread>//使用c++11的多线程 14 15 using namespace std; 16 17 class WebServer 18 { 19 public: 20 WebServer(); 21 ~WebServer(); 22 int ServerInit(u_short port); 23 int

如何利用 pprof 查询 go 内存占用

不羁的心 提交于 2019-12-24 14:43:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近领导看到某个服务的内存占用很高,吩咐我查一下是啥问题。 前提 服务引用了 pprof 包 import ( _ "runtime/pprof" ) 监听了 http 端口 err := http.ListenAndServe(fmt.Sprintf(":%d", listenPort+1), nil) if err != nil { fmt.Println("srv http listen err", err.Error()) } 导出 pprof 文件 如果以上两个前提都满足,就可以导出 pprof 的 heap 文件。 在服务器上直接下载即可。 wget 127.0.0.1:8121/debug/pprof/heap 生成可视化网页 接下来就是用 pprof 解析 heap 文件。 pprof -http=8080 /path/to/heap // or go tool pprof -http=8080 /path/to/heap 分析 打开浏览器,访问 8080 端口,结果一目了然了。 原来是缓存啊,那没事。 参考资料 https://blog.detectify.com/2019/09/05/how-we-tracked-down-a-memory-leak-in-one-of-our-go