自己的strncpy版本不应该工作,但确实如此

时间:2013-08-31 11:22:16

标签: c arrays character

所以这是代码。

#include <stdio.h>
#define MAXOUTPUT 10

void copy_n(char des[], char src[], int n);

int main(void)
{
  int i;
  char output[MAXOUTPUT];
  copy_n(output, "SomeTestInputHere", 26);

  printf("%s\n", output);
  for(i=0;output[i]!='\0';i++)
    printf("%c\n", output[i]);

  return 0;
}

void copy_n(char des[], char src[], int n)
{
  int i;

  for(i=0;i<MAXOUTPUT;i++)
  {
    if(i<n)
      des[i]=src[i];
    else
      des[i]='\0';
  }
}

为什么用char打印字符串或char时不会崩溃?终止NUL从哪里来? 它适用于Reek在C上的指针,并且应该复制n个字符,填充NUL时,des&gt; = src.But当src&gt; des它应该复制所有字符而不终止NUL。

1 个答案:

答案 0 :(得分:0)

您的copy_n函数for循环使用常量MAXOUTPUT作为循环中的保护;并且MAXOUTPUT的值为10.