strlen 在这种情况下如何工作?
How does strlen works in this case?
见以下代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
printf("%lu",strlen("\n"));
}
我知道输出会是 2
但不知道 \
是第一个考虑的字符然后 n
还是 \
是第一个计数并且 \n
将是第二个?
"... But I am confused whether \
would be the first character taken into account and then n
or \
would be the first count and \n
would be the second?"
"\"
是字符串文字中 '\'
字符的表示。
因此,字符串文字 "\n"
的第一个字符是 '\'
,第二个字符是 'n'
。
您可以使用 printf("\n");
进行实验。输出将是 \n
,而不是 \(line feed)
。
尝试打印字符串。
#include<stdio.h>
#include<string.h>
int main(void)
{
printf("%s","\n");
}
\n
将被打印出来。这意味着第一个字符是 \
(转换为 \
的转义序列),第二个字符是 n
.
"\n"
从左到右解析。 "\"
是反斜杠(单个 \
)的转义序列。 "n"
,在这种情况下,只是一个 "n"
而不是 "\n"
。因此,两个字符 return
由 strlen
编辑。
来自 C 标准(6.4.4.4 字符常量)
simple-escape-sequence: one of
\' \" \? \
\a \b \f \n \r \t \v
和
3 The single-quote ', the double-quote ", the question-mark ?, **the
backslash **, and arbitrary integer values are representable according
to the following table of escape sequences:
single quote ' \'
double quote " \"
question mark ? \?
backslash \ \
octal character \octal digits
hexadecimal character \x hexadecimal digits
因此这个字符串文字 "\n"
包含 backslash
和字符 n
.
见以下代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
printf("%lu",strlen("\n"));
}
我知道输出会是 2
但不知道 \
是第一个考虑的字符然后 n
还是 \
是第一个计数并且 \n
将是第二个?
"... But I am confused whether
\
would be the first character taken into account and thenn
or\
would be the first count and\n
would be the second?"
"\"
是字符串文字中 '\'
字符的表示。
因此,字符串文字 "\n"
的第一个字符是 '\'
,第二个字符是 'n'
。
您可以使用 printf("\n");
进行实验。输出将是 \n
,而不是 \(line feed)
。
尝试打印字符串。
#include<stdio.h>
#include<string.h>
int main(void)
{
printf("%s","\n");
}
\n
将被打印出来。这意味着第一个字符是 \
(转换为 \
的转义序列),第二个字符是 n
.
"\n"
从左到右解析。 "\"
是反斜杠(单个 \
)的转义序列。 "n"
,在这种情况下,只是一个 "n"
而不是 "\n"
。因此,两个字符 return
由 strlen
编辑。
来自 C 标准(6.4.4.4 字符常量)
simple-escape-sequence: one of
\' \" \? \
\a \b \f \n \r \t \v
和
3 The single-quote ', the double-quote ", the question-mark ?, **the backslash **, and arbitrary integer values are representable according to the following table of escape sequences:
single quote ' \'
double quote " \"
question mark ? \?
backslash \ \
octal character \octal digits
hexadecimal character \x hexadecimal digits
因此这个字符串文字 "\n"
包含 backslash
和字符 n
.