所以这里是代码。
#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。