strncpy基本用法

October 2, 2013
C

百度百科

注意这句话:

(c/c++)复制src中的内容(字符,数字、汉字….)到dest,复制多少由num的值决定,返回指向dest的指针。如果遇到null字符(’\0’),且还没有到num个字符时,就用(num - n)(n是遇到null字符前已经有的非null字符个数)个null字符附加到destination。注意:并不是添加到destination的最后,而是紧跟着由source中复制而来的字符后面。

示例程序:

#include <cstdio>
#include <cstring>
#include <cstdlib>
int main(void)
{

//  char *greeting = "hello";
//  char *temp = (char*)malloc(6);
//  strncpy(temp, greeting, 3);
//  strncpy(temp + 3, "p!", 2);
//  greeting = temp;
//  printf("%s\n", greeting);
  char des[] = "Hello,i am!";
  int len = strlen(des);
  char source[] = "abc\0def";
  strncpy(des, source, 5);
  printf("%s\n", des);
  for (int i = 0; i < len; ++i) {
    if (des[i] == '\0') printf("$");
    else printf("%c", des[i]);
  }
  printf("\n");

  return 0;
}

可以发现输出是:

abc$$,i am!

这正是我们想要的==

comments powered by Disqus