C 库 - strncpy() 函数



C 库函数 `strncpy()` 接受三个参数 (dest, src, n),它将 `src` 指向的字符串中最多 `n` 个字符复制到 `dest`。如果 `src` 的长度小于 `n`,则 `dest` 的剩余部分将用空字节填充。

语法

以下是 C 库函数 `strncpy()` 的语法:

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

参数

此函数接受以下参数:

  • dest − 这是指向目标数组的指针,内容将被复制到该数组。

  • src − 这是要复制的字符串。

  • n − 要从源复制的字符数。

返回值

此函数返回指向已复制字符串的指针。

示例 1

以下是一个基本的 C 库程序,演示了 `strncpy()` 函数的用法。

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

int main () {
   char src[40];
   char dest[12];
  
   memset(dest, '\0', sizeof(dest));
   strcpy(src, "This is tutorialspoint.com");
   strncpy(dest, src, 10);

   printf("Final copied string : %s\n", dest);
   
   return(0);
}

输出

执行上述代码后,我们将得到以下结果:

Final copied string : This is tu

示例 2

下面的示例演示了使用自定义字符串复制和固定长度。

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

void customStrncpy(char* dest, const char* src, size_t n) {
   size_t i;
   for (i = 0; i < n && src[i] != '\0'; i++) {
       dest[i] = src[i];
   }
   
   while (i < n) {
   
   // Fill remaining characters with null terminators
       dest[i] = '\0'; 
       i++;
   }
}

int main() {
   char source[] = "String Copy!";
   
   // Fixed length
   char destination[15]; 
   customStrncpy(destination, source, 10);

   printf("Custom copied string: %s\n", destination);
   return 0;
}

输出

执行上述代码后,我们将得到以下结果:

Custom copied string: String Cop

示例 3

在这个程序中,`strncpy()` 将源字符串中的固定长度子字符串复制到目标字符串中。

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

int main() {
   char source[] = "Hello, Note!";
   
   // Fixed length
   char destination[10]; 
   
   // Copy "Note!"
   strncpy(destination, source + 7, 4); 

   printf("Copied substring: %s\n", destination);
   
   return 0;
}

输出

执行上述代码后,我们将得到以下结果:

Copied substring: Note
广告