为什么这个程序的strncpy函数功能不对

#include<stdio.h>#include<string.h>intmain(void){chars[]="ABCD";charc[]={0};intn=2;st... #include <stdio.h>
#include<string.h>

int main(void)

{
char s[]="ABCD";
char c[]={0};
int n=2;
strncpy(c,s,n);
printf("%s",c);

return 0;
}
显示结果是 ABBCD 为什么
展开
 我来答
天雨下凡
2017-07-13 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
采纳数:17564 获赞数:65155
爱电脑、爱数学、爱音乐; 熟悉VB、C/C++、JAVA; EXCEL与VBA有所研究…… 数学,一些会,一些被忘却……

向TA提问 私信TA
展开全部
#include <stdio.h>
#include<string.h>
int main(void)

    char s[]="ABCD";
    char c[3]={0};           //char c[]={0}; 会被编译器优化成char c[1]={0};改成char c[3]={0};
    //目标数组的大小至少要比复制字符数目多1,且来存放字符串结尾字符'\0'
    int n=2;
    strncpy(c,s,n);
    printf("%s",c);
    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式