字符串中带有新行字符的C语言strlen函数
通常情况下,C语言中的strlen()函数返回无符号int,但如果字符串有新行字符,那么输出结果是什么? 例如: strlen(“stack\n”)在C语言中的输出是什么?字符串中带有新行字符的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值,该值的类型
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
@user3629249size\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.