首页 > 解决方案 > 字符串长度未正确显示

问题描述

所以我在这里有3个代码,

  1. 在第一个我还没有初始化字符串!strlen 在 ans 中显示“3”

  2. 在第二个中,我用 3 个字符对其进行了初始化,但仍然与“3”相同

  3. 在第三我用4个字符初始化它,输出是“4”

对不起,伙计们,如果它太明显了,但我是新手,很困惑为什么它在第一个代码的输出中显示“3”。

//1st
#include<stdio.h>
#include<string.h>
int main()
{
    char y[20];
    printf("%d",strlen(y));
    return 0;
}

//2nd
#include<stdio.h>
#include<string.h>
int main()
{
    char y[20]="yas";
    printf("%d",strlen(y));
    return 0;
}
//3rd
#include<stdio.h>
#include<string.h>
int main()
{
    char y[20]="asds";
    printf("%d",strlen(y));
    return 0;
}

标签: c

解决方案


您在 1) 案例中看到的是未定义的行为。因为y未初始化。

同样strlen返回size_t,打印其返回值的正确格式是:

printf("strlen(y) = (%zu)\n",strlen(y));


推荐阅读