我有以下代码。
#include <stdio.h>
#include <string.h>
#define MAXLINE 1000
int main()
{
int i;
char s[MAXLINE];
for (i = 0; i < 20; ++i) {
s[i] = i + 'A';
printf("%c", s[i]);
}
printf("\nstrlen = %d\n", strlen(s)); // strlen(s): 20
return 0;
}
我应该写
s[i] = '\0';
在执行循环以标记字符串的末尾后显式还是自动完成?如果没有s[i] = '\0';
函数strlen,则返回正确值20。
是的,您需要自己添加一个空终止符。一个不会自动添加。
您可以通过显式初始化s
为在字节20处不包含NUL的内容来验证这一点。
char s[MAXLINE] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
如果这样做,strlen(s)
将不会返回20。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句