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 7
。 a[7]
包含空终止符。
因此,如果您从 j = len
开始循环,它打印的第一个字符是空字符,然后它将在剩余的迭代中打印可打印字符。如果您从 len-1
开始循环,它将只打印可打印的字符。
您看到的额外间距是空字符。在某些操作系统上,打印空字符没有明显的效果,但在您的系统上它显然会打印 space.
这是我查到的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 7
。 a[7]
包含空终止符。
因此,如果您从 j = len
开始循环,它打印的第一个字符是空字符,然后它将在剩余的迭代中打印可打印字符。如果您从 len-1
开始循环,它将只打印可打印的字符。
您看到的额外间距是空字符。在某些操作系统上,打印空字符没有明显的效果,但在您的系统上它显然会打印 space.