`
frenchleaf
  • 浏览: 39759 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

snprintf

阅读更多
转载http://hi.baidu.com/lindastar/blog/item/e7c08fafdceb63cc7dd92a4a.html

int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...);
函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n
                 的话,将不会溢出。
函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。
Result1(推荐的用法)
#include <stdio.h>
#include <stdlib.h>
int main()
{
     char str[10]={0,};
     snprintf(str, sizeof(str), "0123456789012345678");
     printf("str=%s\n", str);
     return 0;
}

root] /root/lindatest
$ ./test
str=012345678
Result2:(不推荐使用)
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char str[10]={0, };
    snprintf(str, 18, "0123456789012345678");
    printf("str=%s\n", str);
    return 0;
}

root] /root/lindatest
$ ./test
str=01234567890123456
snprintf函数返回值的测试:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char str1[10] ={0, };
    char str2[10] ={0, };
    int ret1=0,ret2=0;
    ret1=snprintf(str1, sizeof(str1), "%s", "abc");
    ret2=snprintf(str2, 4, "%s", "aaabbbccc");
    printf("aaabbbccc length=%d\n", strlen("aaabbbccc"));
    printf("str1=%s,ret1=%d\n", str1, ret1);
    printf("str2=%s,ret2=%d\n", str2, ret2);
    return 0;
}

[root] /root/lindatest
$ ./test
aaabbbccc length=9
str1=abc,ret1=3
str2=aaa,ret2=9
分享到:
评论

相关推荐

    snprintf 的实现

    `snprintf` 函数是C语言中的一个标准库函数,属于`stdio.h`头文件的一部分。它主要用于格式化输出字符串到内存缓冲区,而不是直接输出到屏幕或文件。`snprintf`的名字来源于“sprintf”(用于格式化输出到字符串)与...

    理解snprintf()函数

    在编程中,特别是涉及到字符串处理时,snprintf()函数是一个非常重要的工具。它是一种安全的方式来格式化字符串,避免了常见的缓冲区溢出问题。snprintf()函数是C标准库中的一个输出函数,用于格式化输出并将结果...

    字符串拷贝,最好用snprintf。

    ### 字符串拷贝,最好用snprintf 在C语言编程中,字符串处理是非常常见的操作之一,其中涉及到字符串复制、连接等操作时,开发者通常会遇到`strncpy`、`strncat`以及`snprintf`这三个函数。本文将详细介绍这三种...

    安全函数strcpy_s、strncpy_s、snprintf_s、memcpy_s

    为了解决这个问题,C标准库引入了安全版本的这些函数,例如`strcpy_s`, `strncpy_s`, `snprintf_s`, 和 `memcpy_s`。下面我们将详细探讨这些安全函数的功能和使用方法。 1. **strcpy_s**: 这是`strcpy`的安全版本。...

    inttypes.h snprintf.c snprintf.h stdint.h

    在C语言编程中,`inttypes.h`, `snprintf.c`, `snprintf.h`, 和 `stdint.h` 这四个文件涉及到的关键概念和技术是至关重要的。它们是开发高效、跨平台和安全的C程序的基础。 首先,`inttypes.h` 是一个标准头文件,...

    snprintf:snprintf的独立实现

    独立的snprintf和vsnprintf 该存储库中包含一个相对简单的snprintf和vsnprintf ,我在一两个小时的时间内编写了这些信息,用于业余爱好者的微内核。 我发现自己过去几次编写此代码或类似代码,因此决定编写一个涵盖...

    snprintf函数的用法解析

    `snprintf` 函数是C语言中的一个标准库函数,用于格式化输出字符串,并将其存储在指定的缓冲区中。这个函数的安全性在于它能够防止缓冲区溢出,因为你可以指定缓冲区的最大长度,`snprintf` 会确保不超过这个限制。 ...

    字符串拷贝函数memcpy和strncpy以及snprintf 的性能比较

    问题:函数memcpy(dest, src, sizeof(dest))、strncpy(dest, src, sizeof(dest))和snprintf(dest, sizeof(dest), “%s”, src)都可以将src字符串中的内容拷贝到dest字符串中。哪一种方式效率最高呢?就是说,哪种...

    strncpy与snprintf 的用法比较

    snprintf的正确用法:snprintf(dest, sizeof(dest), “%s”, src); strncpy的问题:1.size一定要用sizeof(dest)或sizeof(dest)-1,不可误用sizeof(src). 2.手工填0. 务必要把dest的最后一个字节手工设置为0. 因为...

    stringtools:一个围绕 snprintf 的小型 C++ 包装器,使其可用于表达式

    #字符串工具C++ 中常见字符串操作任务的助手。 ##用法# include &lt; stringtools&gt;using namespace str ;std::string text = format( " hello %s " )( " world " );std::vector&lt;std&gt; v = split( " , " )( " hello, ...

    nanoprintf:用C99编写的微小的可嵌入printf替代品

    纳米印刷 nanoprintf是snprintf和vsnprintf的嵌入式系统的实现,当完全启用时,其目标是符合C11标准。 nanoprintf不进行内存分配,并且使用少于100字节的堆栈。 nanoprintf在Cortex-M架构上可编译为1-3KB的代码。 ...

    sprintf函数的用法

    接下来,我们将详细解析sprintf函数的用法,以及snprintf函数的用法和重要性。 **sprintf函数的基本用法:** sprintf函数接受的第一个参数是一个字符数组(char数组),这个数组作为输出缓冲区,用于存放格式化后...

    sprintf()后面的...的研究

    `snprintf`的原型为`int snprintf(char *str, size_t size, const char *format, ...)`,多了一个`size`参数,表示`str`数组的最大容量。当格式化后的字符串长度超过`size`减去1时,`snprintf`会在`size`个字符内...

    ruanjian-c-98173.pdf

    在C语言中,字符串处理是非常常见的一类操作,其中`strncpy`和`snprintf`是两个常用的字符串拷贝函数,但它们各有特点和限制。接下来我们将深入探讨这两个函数的用法、潜在问题以及如何根据具体需求选择合适的函数。...

    全志A80平台固定以太网的MAC地址ethernet_a80_merrii_20151203_1607.7z

    len = snprintf(buf, size, "%s", value); // printf("****wyb %s:%d/%s()! buf=%s len=%d\n", __FILE__, __LINE__, __func__, buf, len); break; } fclose(fd); return 0; } int main(int ...

    字符串拷贝函数.docx

    除了这两个函数,`snprintf`也是一个有用的字符串处理函数,它不仅能够拷贝字符串,还能进行格式化输出。`snprintf`的函数原型如下: ```c int snprintf(char *str, size_t size, const char *format, ...); ``` `...

    c语言连接两个字符串.docx

    本文将详细介绍三种常用的方法来实现两个字符串的连接:使用`strcat`函数、手动复制字符以及利用`sprintf`或`snprintf`函数。 #### 1. 使用`strcat`函数 `strcat`函数位于`string.h`头文件中,它用于将一个字符串...

    字符串拷贝函数 (2).docx

    在C语言中,有多种函数可以实现这个目的,其中包括`memcpy`、`strcpy`和`snprintf`。下面我们将详细探讨这三个函数以及它们在字符串拷贝中的应用。 首先,`memcpy`函数是最基础的内存拷贝工具,它源自C标准库中的`...

Global site tag (gtag.js) - Google Analytics