c語言中strncpy函數,函數原型和頭文件


1、函數原型。

#include <stdio.h>

char *strncpy(char *s1, const char *s2, size_t n) //函數的返回值為指針,形參為兩個指針(字符串數組,相當於指向第一個字符的指針)和n(賦值字符個數)。 
{
    char *tmp = s1;  //將指針tmp聲明為指針s1,指向字符串第一個字符的指針, 
    while(n)
    {
        if(!(*s1++ = *s2++))  // 將str2的元素依次賦值給str1,當str2小於n時,一直賦值到最后的null字符終止,當str2大於n時,復制n個元素。 
            break;   // 當str2的長度小於n時,此循環判斷條件起作用 
        n--;  // 當n小於字符串str2的長度時,此時循環判斷條件起作用 
    }
    
    while(n--)  // 當str2小於n時,遞減后n扔為正數,將字符串數組s1后依次復制n-str2長度個'\0'。 
        *s1++ = '\0';
    return tmp;  // 函數返回指針,指向字符串str1第一個字符的指針。 
} 

int main(void)
{
    char str1[128] = "abcdefg";
    char str2[128] = "123456789";
    
    size_t n;
    printf("n = "); scanf("%u", &n);
    
    printf("copy result: %s\n", strncpy(str1, str2, n));  // 函數實參為字符串數組的名稱(相當於指向第一個元素的指針)和復制的字符個數n。 
    
    return 0;
}

函數原型修改

#include <stdio.h>

char *strncpy(char *s1, const char *s2, size_t n) //函數的返回值為指針,形參為兩個指針(字符串數組,相當於指向第一個字符的指針)和n(賦值字符個數)。 
{
    char *tmp = s1;  //將指針tmp聲明為指針s1,指向字符串第一個字符的指針, 
    while(n)
    {
        if(!(*s1++ = *s2++))  // 將str2的元素依次賦值給str1,當str2小於n時,一直賦值到最后的null字符終止,當str2大於n時,復制n個元素。 
            break;   // 當str2的長度小於n時,此循環判斷條件起作用 
        n--;  // 當n小於字符串str2的長度時,此時循環判斷條件起作用 
    }
    
    while(n--)  // 當str2小於n時,遞減后n扔為正數,將字符串數組s1后依次復制n-str2長度個'\0'。 
        *s1++ = '\0';
    *s1 = '\0'; //可以實現僅保留復制的部分 return tmp;  // 函數返回指針,指向字符串str1第一個字符的指針。 
} 

int main(void)
{
    char str1[128] = "abcdefg";
    char str2[128] = "123456789";
    
    size_t n;
    printf("n = "); scanf("%u", &n);
    
    printf("copy result: %s\n", strncpy(str1, str2, n));  // 函數實參為字符串數組的名稱(相當於指向第一個元素的指針)和復制的字符個數n。 
    
    return 0;
} 

 

 

 

2、加載strncpy的頭文件,可以直接調用strncpy函數

#include <stdio.h>
#include <string.h>  // strncpy的頭文件 

int main(void)
{
    char str1[128] = "abcdefg";
    char str2[128] = "123456789";
    
    size_t n;
    printf("n = "); scanf("%u", &n);
    
    printf("copy result: %s\n", strncpy(str1, str2, n));  //函數實參為兩個字符串數組(相當於指向數組第一個元素的指針,函數間數組的傳遞是以指向第一個元素的指針進行的)和
    //復制的元素個數n。 
    
    return 0;    
} 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM