字符串中带有新行字符的C语言strlen函数

字符串中带有新行字符的C语言strlen函数,c,string,newline,strlen,C,String,Newline,Strlen,通常情况下,C语言中的strlen()函数返回无符号int,但如果字符串有新行字符,那么输出结果是什么? 例如: strlen(“stack\n”)在C语言中的输出是什么?strlen(“stack\n”)-->6。'\n'没有什么特别之处 “strlen(“stack\n”)的输出是什么?” 6。换行符(如除'\0'(NUL)以外的任何字符)将被计为任何其他字符 “通常C语言中的strlen()函数返回unsigned int” 这是不对的strlen()返回一个size\u t值,该值的类型

通常情况下,C语言中的strlen()函数返回无符号int,但如果字符串有新行字符,那么输出结果是什么? 例如: strlen(“stack\n”)在C语言中的输出是什么?

strlen(“stack\n”)
-->6。
'\n'
没有什么特别之处

“strlen(“stack\n”)的输出是什么?”

6
。换行符(如除
'\0'
(NUL)以外的任何字符)将被计为任何其他字符

“通常C语言中的
strlen()
函数返回
unsigned int

这是不对的
strlen()
返回一个
size\u t
值,该值的类型与
unsigned int
截然不同,尽管在大多数实现中
size\u t
可以是
unsigned int
的别名。但保持差异是很重要的


注意:如果字符串存储在一个
char
数组中(它不是一个字符串文字且不可变),并且您想删除换行符,那么可以使用
strcspn()


关于:C语言中的strlen()函数返回unsigned int No,它返回的是
size
,这是
unsigned long int
@user3629249
size\u t
的另一个名称,可能是
unsigned long
unsigned
或其他范围至少为[0--65535]的无符号类型。存在
\n
strlen
的返回类型有何关系?看起来完全不相关,这是不相关的。曼斯特伦或直谷歌给出了答案。
char a[7] = "stack\n";        // 7 elements, not 6. Required to store terminating NUL.

printf("%zu\n", strlen(a));   // This will print 6.

a[strcspn(a, "\n")] = 0;      // Replace newline with NUL.

printf("%zu", strlen(a));     // This will print 5.