strlen(const char *s)
未以空终止时定义s
,如果是,它会返回什么内容?
答案 0 :(得分:34)
不,它没有定义。它可能会导致内存访问冲突,因为它会一直计数,直到它到达第一个值为0的内存字节。
答案 1 :(得分:9)
来自C99标准:
strlen 函数返回 在...之前的字符数 终止空字符。
如果没有空字符表示结果未定义。
答案 2 :(得分:5)
您可能需要strnlen吗?
答案 3 :(得分:2)
不是,它会导致bad things。
答案 4 :(得分:2)
如果您的字符串未终止NUL,则该函数将一直保持查找状态。
如果运气好,这会导致程序崩溃。
如果你不幸运,你将获得比预期更长的长度,其中包含许多“意外”值。
答案 5 :(得分:1)
它将返回在找到'\ 0'之前遇到的字符数。
答案 6 :(得分:1)
没有定义。它会导致未定义的行为,这意味着任何事情都可能发生,很可能你的程序会崩溃。
答案 7 :(得分:0)
strlen()仅对以null结尾的字符串起作用(做一些有用的事情);如果你传递的不是其他任何东西,你将得到一个完全未定义的结果。如果你很幸运,它不会导致崩溃:)
答案 8 :(得分:-1)
man 3 strcspn
size_t strcspn(const char *s, const char *reject);
A length of colon delimited strings:
size_t len = strcspn(str, ":");
A length of comma delimited strings:
size_t len = strcspn(str, ",");
A length of tab delimited strings:
size_t len = strcspn(str, "\t");
答案 9 :(得分:-2)
始终定义。
它将返回“string”的长度,直到它到达一个带有null的字节。不好主意,因为这会导致缓冲区溢出。