strlen()没有给出正确的价值?

时间:2013-09-27 20:13:00

标签: c strlen

#include "stdafx.h"
#include<string.h>
#include<stdio.h>


int _tmain(int argc, _TCHAR* argv[])
{

    char abc[28] ;
    //abc[26] = '\0';
    abc[0]=65;
    char hj = abc[0];
    for(int i=0; i<26; i++)
    {
    abc[i]=++hj;

    printf("%d\n",i);

    }
    int l=strlen(abc);
    abc[l]='\0';
    printf("length of abc_array is %d\n",(strlen(abc)));
    for(int i=0; i<strlen(abc); i++)
    {
    printf("%c",abc[i]);
    printf("\n");
    }

}

字符串的输出长度为39,这是错误的。错误是什么?

2 个答案:

答案 0 :(得分:1)

在致电abc[i] = '\0'之前,您需要设置strlen

答案 1 :(得分:0)

标准strlen功能仅适用于字符串。字符串是以零字符结尾的字符序列。将不是字符串的内容传递给strlen会导致未定义的行为。

您在代码中传递给strlen的内容不是字符串。这就是为什么你从strlen得到无意义的结果。