为什么strlen函数返回值最多为99
时间: 2023-03-31 17:03:56 浏览: 145
我不确定为什么您会得出这样的结论。在C语言中,strlen函数返回的是字符串的长度,它的返回值类型是size_t,可以表示比99更大的值。可能是您在使用strlen函数时出现了其他问题,需要进一步检查代码。
相关问题
自定义函数实现两个字符串的连接。要求函数返回值是连接后的字符串。 主函数接收从键盘输入的两行不超过80个字符的字符串(包括空格),调用自定义函数实现字符串的连接。 注意自定义函数中的第1个字符数组长度必须足够大。
好的,根据您提供的代码,我为您续写完整的代码如下:
```c
#include <stdio.h>
#include <string.h>
char* str_cat(char *a, char *b);
const int N = 82;
int main() {
char s1[N*3], s2[N], s3[N*4];
fgets(s1, N, stdin); //最多接收N-1个字符,包括回车
s1[strlen(s1) - 1] = 0;
fgets(s2, N, stdin);
s2[strlen(s2) - 1] = 0;
char *result = str_cat(s1, s2);
printf("连接后的字符串为:%s\n", result);
return 0;
}
char* str_cat(char *a, char *b) {
int len_a = strlen(a);
int len_b = strlen(b);
char *c = (char*)malloc((len_a + len_b + 1) * sizeof(char));
int i, j;
for (i = 0; i < len_a; i++) {
c[i] = a[i];
}
for (j = 0; j < len_b; j++) {
c[i+j] = b[j];
}
c[i+j] = '\0';
return c;
}
```
该程序中,`str_cat()` 函数实现了两个字符串的连接,并返回连接后的字符串。主函数中,我们从键盘输入两个字符串 `s1` 和 `s2`,然后调用 `str_cat()` 函数进行连接,最后输出连接后的结果。需要注意的是,我们在输入字符串后需要将回车符去掉,否则会影响字符串连接的结果。
主函数接收从键盘输入的两行不超过80个字符的字符串(包括空格),调用自定义函数实现字符串的连接。 函数调用结束后输出两个字符串。 注意第1个字符串连接后最多有80*2个字符,定义字符数组时要保证长度足够大。 函数接口定义: void str_cat(char a[], char b[]); a 是char型数组形参,接收实参数组的首元素地址,第一个实参必须是字符数组(长度要足够连接); b 是char型数组形参,接收实参数组或字符串的首元素地址,; 函数无返回值。 str_cat函数的功能是将b
数组中的字符串连接到a数组后面,即将b数组中的字符逐个复制到a数组的末尾。函数实现如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void str_cat(char a[], char b[]) {
int lenA = strlen(a);
int lenB = strlen(b);
for (int i = 0; i < lenB; i++) {
a[lenA + i] = b[i];
}
a[lenA + lenB] = '\0'; // 添加字符串结尾标志
}
int main() {
char str1[161], str2[81];
cin.getline(str1, 161);
cin.getline(str2, 81);
str_cat(str1, str2);
cout << str1 << endl;
return 0;
}
```
在主函数中,先定义一个长度为161的字符数组str1,接收第1个字符串,即80*2个字符的长度。然后定义一个长度为81的字符数组str2,接收第2个字符串。调用str_cat函数将str2数组中的字符串连接到str1数组后面。最后输出连接后的字符串str1。
阅读全文