开发者社区> 问答> 正文

字符串函数strncpy有个问题

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    char a[3][7];
    char temp[40];
    int i=0 ;

    while(i<3&&gets(temp)){
        if(temp[0]!='q'){
            printf("%s doesn't begin with q",temp);
        }
        else{
            strncpy(a[i],temp,6);
            a[i][6]='\0';
            i++;
        }
    }
    for(i=0;i<3;i++){
        puts(a[i]);
    }
    return 0;
}

ai='0';
为什么这里是ai='0';不是ai='0', ai不应该是temp里面的一个字符吗?我把ai='0'改成ai='0'有陷入死循环了,这是什么原因呢?

展开
收起
a123456678 2016-06-07 19:37:37 2487 0
1 条回答
写回答
取消 提交回答
  • 数组下标是从0开始的

    char a3;
    代表3个长度为7的char数组,每一个数组的下标范围是ai ... ai

    strncpy(a[i],temp,6);
    填充了a[i]的前6个字节: ai ... ai

    ai 是 a[i]的最后一个元素,ai就溢出了

    2019-07-17 19:30:51
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载