6、有如下定义CHAR str1[100] = "12345"; CHAR str2[100] = "12345"; 那么sizeof(str1)、strlen(strcat(str1,str2))和sizeof(strcat(str1,str2))分别等于【 】、【 】和【 】
时间: 2024-03-25 19:38:05 浏览: 101
数据结构-c语言-带main函数-串1-串的长度-标准库函数strlen()和sizeof()的两种方法。
根据题目中的定义:
```c
char str1[100] = "12345";
char str2[100] = "12345";
```
可以知道,`str1` 和 `str2` 分别是长度为 6 的字符串,其中包括 5 个字符和一个结尾的空字符(`'\0'`)。因此,`sizeof(str1)` 的值为 100,即字符数组 `str1` 的长度为 100 个字节。
调用 `strcat(str1, str2)` 函数将字符串 `str2` 拼接到字符串 `str1` 的末尾。由于 `str1` 的长度为 6,再加上 `str2` 的长度也是 6,因此 `strcat` 函数执行后,`str1` 的长度变为 12(包括两个结尾的空字符)。又因为 `strcat` 函数返回的是指向目标字符串的指针,因此调用 `strlen` 函数计算拼接后的字符串长度,即 `strlen(strcat(str1, str2))` 的值为 12。
最后,`sizeof(strcat(str1, str2))` 的值为 100,即字符数组 `strcat(str1, str2)` 的长度为 100 个字节。这是因为在调用 `strcat` 函数后,`str1` 变为了长度为 12 的字符串,但是字符数组 `strcat(str1, str2)` 的大小仍然是 100,这是在定义时分配的内存大小。同时,由于 `strcat` 函数返回的是指向目标字符串的指针,所以 `sizeof(strcat(str1, str2))` 仍然是字符数组的大小。
阅读全文