草庐IT

snprintf

全部标签

c++ - "ucrtbase.dll"中的 _snprintf_s() 崩溃,状态为 STATUS_ILLEGAL_INSTRUCTION

我注意到我的二进制文件会在没有SSE支持的情况下在CPU上崩溃,异常代码为0xC000001D(STATUS_ILLEGAL_INSTRUCTION),尽管我正在使用选项进行编译/arch:IA32。而且我已经能够追踪到它崩溃的确切位置:无论在哪里首次调用_snprintf_s(),它都会崩溃。崩溃发生在ucrtbase.dll内部,不是我自己的代码。现在,有趣的部分是,当我使用编译器选项/MT进行“完全静态”构建时,为了避免显式依赖ucrtbase.dll,生成的二进制文件工作得很好!但是,只要我使用选项/MD将一些代码编译为“共享”构建,它就会在ucrtbase.dll中再次崩溃>

c++ - 替换 snprintf(3) 的 C++ 习语是什么?

我有一些C++代码需要在解析某个文件头失败时生成错误消息。在这种情况下,我需要确保header中的某个4字节字段是“OggS”,如果不是,则返回错误消息,如“invalidcapture_pattern:'FooB';expecting'OggS'”。我的代码看起来像这样:conststringOggPage::parseHeader(void){read(fd,capture_pattern,sizeof(capture_pattern));//errorhandlingomittedif(strncmp(capture_pattern,CAPTURE_PATTERN,sizeof(

c++ - printf/snprintf 格式字符 %N 有什么作用? (不是 %n)

正在检查一些旧代码并发现:charbuf[...];inti=1,j=2;snprintf(buf,"%d-blah_%d-blah_%N",i,j);注意只有两个传递的vararg参数,但是有3个格式字符串。打印1-blah_2-blah_0在任何文档中都找不到这个。%N是做什么的? 最佳答案 根据标准文档(例如POSIXprintf)它没有定义任何内容(因此%N可能是undefinedbehavior,并且在标准中肯定是未指定的行为)。但是,GNUglibc报价customizingprintf能力。您的程序可能已在(其他地方)

c++ - snprintf 的逆函数

C或C++中是否有任何函数可以执行snprintf的逆运算,这样charbuffer[256]snprintf(buffer,256,"Number:%i",10);//Buffernowcontains"Number:10"inti;inverse_snprintf(buffer,"Number:%i",&i);//inowcontains10我可以自己写一个满足这个要求的函数,但是标准库中已经有了吗? 最佳答案 是的,有sscanf().它返回与输入成功匹配的标记数,因此您可以检查返回值以查看它在输入字符串中的位置。if(ssc

c++ - snprintf Format String 安全漏洞问题

对于这行代码,我们有一个Coverity错误:snprintf(tempStr,size,testStrings[testID],A2DtoV(testResults[testID].value),A2DtoV(testResults[testID].min),A2DtoV(testResults[testID].max));错误说:non_const_printf_format_string:"formatstringisnotastringliteral,potentialsecurityvulnerabilityifusercontrolled"我将testStrings更改为c

C++ 在带有右值缓冲区的 ostream 中使用 snprintf,格式是否正确?

我想知道我是否可以在ostream中使用snprintf格式,这样我就可以在流表达式本身中嵌入对snprintf的调用.这在GCC4.9中编译,但是可以吗?cout 最佳答案 这是格式正确且定义明确的。{}用于复制列表初始化对char[12]的右值引用,它创建一个临时char[12]数组以引用是绑定(bind)的。这个临时值一直存在到完整表达式的末尾-在本例中,直到分号,因此可以安全地返回指向数组中元素的指针并用于在该表达式中打印。(lambda返回一个char*指向这个数组的第一个元素。)标准语:§8.5[dcl.init]/p1

【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现

🌈writeinfront:🔍个人主页:@啊森要自信的主页✏️真正相信奇迹的家伙,本身和奇迹一样了不起啊!欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助,如有错误,可以指出,让我们一起探讨学习交流,一起加油鸭。文章目录✒️前言💯字符分类函数💯💯字符串转换函数💯💯💯strlen的使⽤💯💯💯💯strlen的3种模拟实现方式📝总结✒️前言本小节我们将学习字符分类函数,字符串转换函数,使用库函数实现函数(tolower,toupper)的大小写转换,当然还有字符串转换成整数(isdigit和atoi),使用(snprintf)将整数怎么转换回字符串。最后还有strlen函数的三种

c++ - strftime 性能与 snprintf

我遇到了一个有趣的性能难题,但在我开始深入研究glibc并左右输入错误之前,我只是想获得可能存在的任何见解。我有代码在其中一个函数中执行此操作:gettimeofday(&tv,0);localtime_r(&tv.tv_sec,&local_tm);charresult[25];strftime(result,24,"%Y-%m-%d%H:%M:%S",&local_tm);其余代码与本题无关。当我用这个替换它时:gettimeofday(&tv,0);localtime_r(&tv.tv_sec,&local_tm);charresult[25];snprintf(result,s

snprintf函数的用法详解

c语言的snprintf函数的用法详解snprintf()函数是一种格式化函数,用于将格式化的字符串存储到一个字符数组中,并且有一个参数用来限制输出的最大字符数。语法:intsnprintf(char*s,size_tn,constchar*format,…);参数:s:指向要存储字符串(由format参数格式化)的字符数组。n:指定存储字符串的最大字符数(不包括NULL结尾)。format:是格式字符串,用于格式化输出字符串。返回值:该函数返回实际写入的字符数(不包括NULL结尾)。snprintf()函数的最大特点是它可以防止由于格式化字符串太长而导致的缓冲区溢出,它可以自动截断字符串,以

c++ - 为什么 snprintf 比 ostringstream 快,还是这样?

我在某处读到snprintf比stringstream快。有没有人有任何经验?如果是,为什么会更快。 最佳答案 std::ostringstream不是要求变慢,但在实现时通常会变慢。FastFormat'swebsitehassomebenchmarks.流的标准库设计比snprintf支持的要多得多。该设计是可扩展的,并包括由公开公开的方法调用的protectedvirtual方法。这允许您从流类之一派生,并确保如果您重载protected方法,您将获得所需的行为。我相信编译器可以避免virtual函数调用的开销,但我不知道有任