c语言==字符数组与字符串,char的取值范围(1)

求char类型数组的strlen长度

昨天老师给了一道题目
#include <stdio.h>
#include "string.h"

int main()
{
    int i;

    char a[1000];

    for(i = 0; i < 1000; i++)
    {
    a[i] = - i - 1;
    }

    printf("strlen(a)=%d\n", strlen(a));

    return 0;
}

当时心想这个答案不就是1000吗。我甚至想了1001,因为想到字符串有\0。

但是后来才意识到了这是要求的是strlen。1000的这个数组的sizeof。

sizeof求的是数组的空间容量,而strlen求的是数组的实际长度,有多少数字字符存储在里面。

上面说到\0 因为我现在大二 大一的时候没有好好学c语言,怎么都入不了门 现在再回顾的时候发现一些细节还是处理不好。

首先谈谈\0与strlen的关系。
strlen一遇到\0他就不会再继续下去了,所以他当然是不会去计算\0的个数的。
strlen("abcd\0ef\ng\0")
这个答案应该是4,因为他遇到第一个\0就自动停止了。只读了abcd。

再说说\0与sizeof的关系
sizeof是表示数组情况的,而字符数组在初始化的时候是不加’\0’的。所以sizeof不包括’

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值