C语言 strncpy()函数

  • Post category:C

C语言的strncpy()函数是字符串处理函数中的一种,它可以用于将一个字符串的前几个字符复制到另一个指定长度的字符串中。下面是strncpy()函数的详细使用攻略。

函数原型

char *strncpy(char *dest, const char *src, size_t n);

参数说明

  • dest:目标字符串,即数据拷贝的接收位置,会被修改。该指针指向的位置必须足够大以容纳拷贝的字符串,否则会出现未定义行为。
  • src:源字符串,即待复制的数据所在的位置。该指针指向的位置必须是一个可读的字符串,否则会出现未定义行为。
  • n:拷贝的字符个数,即需要复制的字符串长度。需要注意的是,如果源字符串的长度小于需要复制的字符个数n,则目标字符串将被填充0,直到到达n个字符。如果源字符串长度大于需要复制的字符个数n,则目标字符串将不会以’\0’结尾。

返回值

该函数返回目标字符串的指针,即 dest 所指向的位置。

使用示例

示例一

#include <stdio.h>
#include <string.h>

int main()
{
    char dest[20];
    char* src = "hello world";

    strncpy(dest, src, 5);
    dest[5] = '\0';

    printf("dest: %s\n", dest);

    return 0; 
}

输出结果为:

dest: hello

在此示例中,我们初始化了一个目标字符串 dest 和一个源字符串 src。我们调用了 strncup() 函数来复制 src 中的前 5 个字符到 dest 中,并在 dest 末尾处添加 ‘\0’。最终输出结果为 dest: “hello”。

示例二

#include <stdio.h>
#include <string.h>

int main()
{
    char dest[20] = "";
    char src[15] = "hello world!";

    strncpy(dest, src, 10);

    printf("dest: %s, src: %s\n", dest, src);

    return 0; 
}

输出结果为:

dest: hello worl, src: hello world!

在此示例中,我们初始化了一个目标字符串 dest 和一个源字符串 src。我们调用了 strncup() 函数来复制 src 中的前 10 个字符到 dest 中,并没有在 dest 末尾处添加 ‘\0’。最终输出结果为 dest: “hello worl”,而 src 仍被保持不变。需要注意的是,由于我们没有在目标字符串的末尾处添加 ‘\0’,所以最终目标字符串并不是一个合法的字符串,需要额外添加 ‘\0’ 才能正确使用。