Return 函数 strlen() 的值?

Return value of function strlen()?

这是我查到的strlen的定义。

strlen( ) function counts the number of characters in a given string and returns the integer value. It stops counting the character when null character is found.

现在根据我的说法,"kshitij" 的 strlen 应该是 = 7,即不包括空字符,因为该函数在遇到空字符时停止计数。 因此,如果我想打印单词 "kshitij" 及其反转与单词中的字母一样多的次数,那么正确的代码应该是。

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    char a[1000];
    gets(a);
    int len=strlen(a);
    for(int i=0; i<= len ; i++)
    {
        for(int j=len ; j>=0; j--)
        {
            cout<<a[j];
        }
        cout<<" ";
    }
    getch();
     return 0;
 }

因此它提供了合理正确的输出。(除了间距我不明白)

现在我很想知道如果我这样做会打印什么:

 #include<iostream.h>
 #include<stdio.h>
 #include<conio.h>
 #include<string.h>
 int main()
 {
    char a[1000];
    gets(a);
    int len=strlen(a);
    for(int i=0; i<= len ; i++)
    {
        for(int j=len -1 ; j>=0; j--)
        {
            cout<<a[j];
        }
        cout<<" ";
    }
    getch();
    return 0;
 }

根据我的说法,它不应该产生最后一个字母,即 "j",但我看到它产生相同的输出,但比之前少了 1 个间距。

同样我试过:

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    char a[1000];
    gets(a);
    int len=strlen(a);
    for(int i=0; i<= len - 1  ; i++)
    {
        for(int j=len ; j>=0; j--)
        {
        cout<<a[j];
        }
        cout<<" ";
    }
    getch();
    return 0;
}

根据我的说法,输出应该只包含“7 - 1 = 6”倍的反向字符串,但几乎 same.The -1 的输出对 "len" 的值没有影响.

有了这些,我觉得 strlen 函数也必须计算空字符,wiz strlen (a)= 8(包括 ‘[=16=]’),但后来我只看到输出中有7个输出window。 这让我想知道 strlen 函数是否也计算空字符,如果它计算空字符,那么它必须在输出 window 中将其显示为 space。我无法理解完整的概念,需要任何帮助吗? 我是编程新手,请放轻松。谢谢 :)。

这个

for(int i=0; i<= len ; i++)

with len == 7 将循环 0, 1, 2, 3, 4, 5, 6, 7;
因为只要条件 i<= len 为真就会执行。
当条件不再为真时它将停止执行,这在 i==8.
之前不适用 对于 i==8 不会执行,但是对于 1 到 7 和 0,即 8 次。

使用 len 执行循环的习惯用法是

for(int i=0; i< len ; i++)

如果您有一个包含 7 个字符的字符串,可打印字符的数组索引从 0 到 6,并且 strlen() 将 return 7a[7] 包含空终止符。

因此,如果您从 j = len 开始循环,它打印的第一个字符是空字符,然后它将在剩余的迭代中打印可打印字符。如果您从 len-1 开始循环,它将只打印可打印的字符。

您看到的额外间距是空字符。在某些操作系统上,打印空字符没有明显的效果,但在您的系统上它显然会打印 space.