草庐IT

sprintf_chk

全部标签

c++ - sprintf 如何与 CString 和 std::string 一起工作

CStrings="test";std::stringss="test";charz[100];sprintf(z,"%s",ss.c_str());//z="test":OKcharz2[100];sprintf(z2,"%s",ss);//z2="(null)":OK.undefinedbehaviorisexpectedcharz3[100];sprintf(z3,"%s",s);//z3="test":Howisthispossible?!谁能解释一下CString如何与sprintf一起正常工作? 最佳答案 之所以有效,是

c++ - sprintf_s 问题

我在使用这个函数时遇到了一个有趣的问题。我使用它如下:intnSeq=1;charcBuf[8];intj=sprintf_s(cBuf,sizeof(cBuf),"%08d",nSeq);每次我得到一个异常(exception)。异常(exception)是缓冲区太小。当我将函数中的第二个字段更改为sizeof(cBuf)+1时。如果我只想复制8个字节并且我有一个包含8个字节的数组,为什么我需要添加一个? 最佳答案 您的缓冲区包含8个位置。您的字符串包含8个字符和一个空字符来结束它。

c++ - 我怎样才能改进/替换我认为是性能热点的 sprintf?

通过分析我发现这里的sprintf需要很长时间。是否有性能更好的替代方案仍然可以处理y/m/dh/m/s字段中的前导零?SYSTEMTIMEsysTime;GetLocalTime(&sysTime);charbuf[80];for(inti=0;i注意:OP在评论中解释说这是一个精简的示例。“真实”循环包含使用数据库中不同时间值的附加代码。分析已将sprintf()确定为违规者。 最佳答案 如果您正在编写自己的函数来完成这项工作,则字符串值0..61的查找表将避免对除年份以外的所有内容进行任何算术运算。编辑:请注意,为了处理闰秒(

c++ - 四舍五入 - .5 - sprintf

我使用以下代码四舍五入到2dp:sprintf(temp,"%.2f",coef[i]);//coef[i]returnsadouble成功将6.666四舍五入到6.67,但是四舍五入的时候不能正常工作5.555。它返回5.55,而它应该(至少在我看来)返回5.56。当下一个数字是5时,如何让它四舍五入?即返回5.56。编辑:我现在意识到这是在发生,因为当我用cin输入5.555时,它得到保存为5.554999997。我将尝试分两个阶段进行舍入-首先是3dp,然后是2dp。任何其他(更优雅的)想法? 最佳答案 看来您必须使用数学舍入

Go中字符串处理:fmt.Sprintf与string.Builder的比较

在Go语言中,我们通常会遇到两种主要的方式来处理和操作字符串:使用fmt.Sprintf函数和string.Builder类型。尽管两者都可以实现字符串的格式化和连接,但它们在性能和用法上有一些关键区别。1.fmt.Sprintffmt.Sprintf是一个函数,它根据提供的格式化字符串和参数列表,将它们格式化为一个字符串。这个函数非常方便,可以方便地格式化各种数据类型,并生成字符串。name:="John"age:=30str:=fmt.Sprintf("Mynameis%sandI'm%dyearsold",name,age)fmt.Println(str)输出:MynameisJohna

c++ - sprintf 一个 LPCWSTR 变量

我正在尝试调试打印一个LPCWSTR字符串,但是在sprintf压入缓冲区期间我遇到了问题,因为它只从字符串。代码如下:HANDLEWINAPIhookedCreateFileW(LPCWSTRlpFileName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributes,HANDLEhTemplateFile){charbuffer[1024];sprintf_s(buffer,

c++ - 如何转义 sprintf() % 标记以便它们不会被识别为变量?

这有可能吗?如果有一天我想sprintf(str,"%doodle%d",var);输出"%doodle123"而不是"123oodle",我如何才能停止处理第一个%d? 最佳答案 %%转义% 关于c++-如何转义sprintf()%标记以便它们不会被识别为变量?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3206496/

mysql - 如何禁用和启用表 mysql 中的所有约束,包括。 PK FK CHK UNI 等

我需要将测试数据加载到表中,我想禁用所有可能的约束,我已经找到了如何全局关闭外键,但我需要禁用所有约束,PK、FK、CHK、UNIQ等。是有可能在全局范围内做到吗?当然,在那之后我必须调整所有约束。 最佳答案 使用以下命令禁用约束:--disableUNIQ,PK,...ALTERTABLEDISABLEKEYS;--diableFKSETFOREIGN_KEY_CHECKS=0;检查实例thissite有关更多示例。恢复:SETFOREIGN_KEY_CHECKS=1;ALTERTABLEENABLEKEYS;来自引用:forei

php - sprintf() 如何防止 SQL 注入(inject)?

我听说sprintf()可以防止SQL注入(inject)。是真的吗?如果是,怎么办?为什么人们推荐这样写查询:$sql=sprintf('SELECT*FROMTABLEWHERECOL1=%sANDCOL2=%s',$col1,$col2); 最佳答案 sprintf不会保护你!它只替换%s你必须mysql_real_escape_string这样:$sql=sprintf('SELECT*FROMTABLEWHERECOL1="%s"ANDCOL2="%s"',mysql_real_escape_string($col1),m

go - 在 fmt.Sprintf 格式字符串中多次引用同一参数

我有这个功能:funcgetTableCreationCommands(vstring)string{return`CREATETABLEshare_`+v+`PARTITIONOFshareFORVALUESIN(`+v+`);CREATETABLEnearby_`+v+`PARTITIONOFnearbyFORVALUESIN(`+v+`);`}有点靠不住...有没有办法使用fmt.Sprintf格式化字符串?像这样:funcgetTableCreationCommands(vstring)string{returnfmt.Sprintf(`CREATETABLEshare_%vP