gpt4 book ai didi

c - 字符串末尾的空字符 '\0'

转载 作者:行者123 更新时间:2023-12-04 22:26:42 24 4
gpt4 key购买 nike

我有以下代码。

#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(s) 返回正确的值 20。

最佳答案

是的,您需要自己添加一个空终止符。一个不是自动添加的。

您可以通过将 s 显式初始化为在字节 20 处不包含 NUL 的内容来验证这一点。

char s[MAXLINE] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";

如果你这样做 strlen(s) 不会返回 20。

关于c - 字符串末尾的空字符 '\0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59553322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com