林霂 2015-11-24 05:19 采纳率: 50%
浏览 2423

C中关于数组长度影响strncpy结果的问题,求教

今天刚刚学习字符串数组,运行过程中发现数组的长度会影响输出的结果
在长度为16及以下时候,一切正常

 #include <stdio.h>
#include <string.h>
int main() 
{ 
    char s[16],l[16];
    gets(s);
    puts(s);
    strncpy(l,s,3);
    strcat(l,s);
    puts(l);
 } 

图片说明

长度改为17及以上以后,问题出现了,strncpy函数的结果很奇怪

 #include <stdio.h>
#include <string.h>
int main() 
{ 
    char s[17],l[17];
    gets(s);
    puts(s);
    strncpy(l,s,3);
    strcat(l,s);
    puts(l);
 } 

图片说明

求教
1.是什么导致了以16为节点的这种不同?
2.当数组长度到17及以上时候,在strncpy的结果中
出现了一个'-'符号,是怎么回事?

小弟在此谢过了!

  • 写回答

3条回答 默认 最新

  • oyljerry 2015-11-24 09:22
    关注

    先把数组清空了试试,memset等,然后再strncpy

    评论

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻看一个题
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)