strlen输出之后为什么是长度+1呢?

#include<stdio.h>
#include<string.h>
int main()
{
    int m,n;
    char str1[100],str2[100];
    char *p=str1,*q=str2;
    gets(str1);
    gets(str2);
    m=strlen(str1);n=strlen(str2);
    printf("%d,%d",m,n);
    return 0;
}

 

怎么输入的啊?如果是:ab回车cd回车,这样输入的话,不应该是3,3啊,是不是在ab后面输入别的东西了?如果不确定,就打印一下str1和str2中的每个字符的ascii码(如果是vs的话,加断点,看一下str1和str2 的数据就可以了),看看第3个字符到底是什么。

最后一位应该是换行符

c语言字符串 后面默认有一个\0