0

所以这里是代码。

#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';
  }
}

为什么在按字符打印字符串或字符时不会粉碎?终止的 NUL 是从哪里来的?它用于 C 上的 Reek 指针,应该复制 n 个字符,当 des>=src 时填充 NUL。但是当 src>des 时,它应该复制所有字符而不终止 NUL。

4

1 回答 1

0

您的copy_n函数for循环使用常量MAXOUTPUT作为循环中的守卫;并且MAXOUTPUT值为 10。

于 2013-08-31T11:27:02.037 回答