c的strlen()这把尺子坏了


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

int main()
{
    char a[20];
    int i=0;
    do{
        scanf("%c",&a[i]);                       /*为什么输入6位数 ,m输出为6            但输入7位数,m输出为8*/
        i++;                                                         
    } while (a[i-1] != '\n' );
    int m = strlen(a) - 1; 
       printf("%d",m);
    




    return 0;
}

修改如下,strlen()统计到结束符为准,供参考:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[20];
    int i = 0;
    do {
        scanf("%c", &a[i]); //为什么输入6位数 ,m输出为6,但输入7位数,m输出为8
        i++;
    } while (a[i - 1] != '\n');
    a[i - 1] = '\0';     //字符串最后结束符漏了
    int m = strlen(a) - 1;
    printf("%d,i=%d", m, i);
    return 0;
}